python - 看似简单的递归函数以无限循环结束

标签 python recursion

我写了下面的代码:

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/

相关文章:

javascript - AngularJS 组件绑定(bind)在缩小版上未定义

python - "index.week"使用 iterrows 时进行过滤

python - Python的幂运算符**的一个bug?

java - 使用递归传递具有基本情况的参数

c - 可视化 C 中的递归

python - 了解递归奇/偶函数

Python - 使用网格布局来格式化窗口

python - 使用 Python 在 Pandas 数据框中创建星期几列

python - 无法将 PostgreSQL 数据库从 docker 连接到 python

python - Python 中的指数递归