|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
各位,小弟遇到如下两个递归的函数,但两个函数看起来差不多,但运行后的结果不同,代码如下:
- def function1(length):
- if length > 0:
- print(length)
- function1(length - 1)
- def function2(length):
- while length > 0:
- print(length)
- function2(length - 1)
复制代码
例如,调用 function1(3), 输出结果为
3
2
1
但调用function2(3), 输出结果为
3
2
1
1
...
1
将会无限循环下去
小弟在Visualize python中运行function2,没有看懂红色字迹部分,为什么在 while 0>0: 这句返回值为None,0>0,不应该返回 False 吗?
所以,仍旧不明白 function2为什么会是死循环,望达人指教
if length > 0这个判断后,if中的语句只会执行一遍
但是while length > 0这一句,你最后调用到1的时候 length == 1 一直大于0
执行完循环体后回来判断还是大于0这样就会一直循环
红字部分是你工具循环了1000次后自动帮你停下你的循环,防止一直占用内存,建议你修改你的代码,减少循环次数
|
|