我写了以下代码:
def incr_num(x, y):
while x <= y:
print x
incr_num(x+1, y)
Run Code Online (Sandbox Code Playgroud)
当我调用它时
incr_num(1, 10)
Run Code Online (Sandbox Code Playgroud)
它进入一个无限循环并给出这个输出:
1
2
3
4
5
6
7
8
9
10
10
10
10
10
10
10
(number 10 keeps repeating)
Run Code Online (Sandbox Code Playgroud)
我期待它打印数字1-10.我无法理解为什么不这样做.有人可以告诉我为什么会这样.
我正在使用python2.7.
正确的版本是:
def incr_num(x, y):
if x <= y:
print x
incr_num(x+1, y)
Run Code Online (Sandbox Code Playgroud)
请注意,每次递归函数调用最多打印一次 x。
更新:您的函数不起作用的原因是incr_num(10,10)打印 10 然后调用incr_num(11,10),它立即返回。此后,incr_num(10,10)继续。它不会跳出循环while并继续进行下一次迭代,再次打印10和调用。incr_num(11,10)正如您所看到的,这个循环并没有结束。
| 归档时间: |
|
| 查看次数: |
279 次 |
| 最近记录: |