def bin_to_decimal(inp, degree=0, result=0):
arr = []
for i in inp:
arr.append(i)
if not arr:
return result
else:
x = arr.pop(-1)
result += int(x)**degree
return bin_to_decimal(inp, degree+1, result)
bin_to_decimal('1001')
当我调用递归时,是否可以跳过这部分功能?
arr = []
for i in inp:
arr.append(i)
您可以使用:
def bin_to_decimal(inp, degree=0, result=0, skip=False):
if skip:
arr = []
for i in inp:
arr.append(i)
if not arr:
return result
else:
x = arr.pop(-1)
result += int(x)**degree
# Flag True to skip
return bin_to_decimal(inp, degree+1, result, True)
但是您现在将拥有一个未引用的变量arr
我建议你看看你可以使用的其他一些方法:
内置:
>>> int('1001',2)
9
迭代:
def bin_to_decimal(inp):
x = 0
for i in inp:
x = x*2 + int(i)
return x
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句