【问题标题】:List didn't return at the end of the recursion列表在递归结束时没有返回
【发布时间】:2022-12-08 04:40:03
【问题描述】:

我尝试使用递归将十进制数转换为二进制数,最后它应该返回包含二进制数数字的列表。但是它没有返回该列表,而是返回 None。但是当我尝试在递归函数中打印列表时,它会正确打印列表。有人可以指出我在这里做错了什么吗?

def binary_rec(n, l=[]):
    if n>=1:
        r = n%2
        l.append(r)
        binary_rec(n//2, l)
    else:
        print(sorted(l,reverse=True))
        l_rev = sorted(l,reverse=True)
        #ll = l.copy()
        #print('I am ll')
        #print(ll)
        #return ll
        return l_rev

if __name__ == '__main__':
    import sys
    inp = sys.argv[1]
    x = binary_rec(int(inp),l=[])
    print(x)

【问题讨论】:

标签: python recursion


【解决方案1】:

每次递归调用函数时都必须返回列表:

def binary_rec(n, l=[]):
    if n>=1:
        r = n%2
        l.append(r)
        return binary_rec(n//2, l)
    else:
        print(sorted(l,reverse=True))
        l_rev = sorted(l,reverse=True)
        #ll = l.copy()
        #print('I am ll')
        #print(ll)
        #return ll
        return l_rev

if __name__ == '__main__':
    import sys
    inp = sys.argv[1]
    x = binary_rec(int(inp),l=[])
    print(x)

【讨论】:

    【解决方案2】:

    你不返回递归调用的结果,改为:

    return binary_rec(n//2, l)
    

    【讨论】:

      猜你喜欢
      • 2020-03-15
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      • 2020-10-14
      • 2021-05-07
      • 1970-01-01
      • 2021-08-21
      • 2020-01-22
      相关资源
      最近更新 更多