python - 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)
解决方案
在 while 循环中有一个 for 循环,在 for 循环中有一个递归调用。一般来说,这是非常糟糕的做法,会让你头疼。当 len(fib_list) 达到 20 时它不会停止,因为只要 while 循环执行一次,您的 for 循环和递归调用就会执行。在您的递归调用中, len(fib_list) 可能 < 20,它将进入 while 循环,再次启动 for 循环。
推荐阅读
- symfony - Sonata 管理员列表字段模板被忽略
- jmeter - 错误:UnicodeDecodeError:'charmap' - Taurus
- reactjs - 反应项目 WAR 文件
- android - 库 com.google.firebase:firebase-analytics 正在被其他各种库请求
- c++11 - 移动构造函数注释未打印
- css - flexbox 项目的图像和文本与绝对定位的 div 重叠(工具提示)
- oracle-cloud-infrastructure - oci java sdk 通过代理
- c# - Unity 2018 C# - Fbx 使用输入运行动画缩放?
- javascript - 结合 ReactJS + Marzipano 时出现白屏?
- service-worker - 缓存在相对路径下的缓存存储中的项目