我写了下面的代码:
def incr_num(x, y):
while x <= y:
print x
incr_num(x+1, y)
当我调用它时
incr_num(1, 10)
它进入一个无限循环并给出这个输出:
1
2
3
4
5
6
7
8
9
10
10
10
10
10
10
10
(number 10 keeps repeating)
我原以为它会打印数字 1-10。我不明白为什么不这样做。谁能告诉我为什么会这样。
我用的是python2.7。
最佳答案
正确的版本应该是:
def incr_num(x, y):
if x <= y:
print x
incr_num(x+1, y)
请注意,每次递归函数调用最多打印一次 x。
更新:
您的函数不起作用的原因是 incr_num(10,10)
打印 10,然后调用 incr_num(11,10)
,它会立即返回。此后,incr_num(10,10)
继续。它不会跳出 while
循环并继续下一次迭代,打印 10
并再次调用 incr_num(11,10)
。如您所见,这个循环并没有结束。
关于python - 看似简单的递归函数以无限循环结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47603498/