首页 > 解决方案 > While 循环不遵守约束

问题描述

下面的代码行运行,但是当 len(fib_list) 达到 < 20 时 while 循环不会停止。它会继续添加到列表中,尽管是向后的。有任何想法吗?

fib_list = [0,1]

def fib(n, sum):
    while len(fib_list) < 20:
        for i in range(n, len(fib_list)):
            sum += fib_list[i]
            n += 1
            print(n, sum, len(fib_list))
            fib_list.append(sum)
            fib(n, sum)
        else:
            break
        
fib(0, 0)

标签: pythonwhile-loop

解决方案


在 while 循环中有一个 for 循环,在 for 循环中有一个递归调用。一般来说,这是非常糟糕的做法,会让你头疼。当 len(fib_list) 达到 20 时它不会停止,因为只要 while 循环执行一次,您的 for 循环和递归调用就会执行。在您的递归调用中, len(fib_list) 可能 < 20,它将进入 while 循环,再次启动 for 循环。


推荐阅读