如何在递归中跳过一段代码?

你的爷爷
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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章