为什么此函数会导致最大递归错误?

时间:2013-05-04 13:34:42

标签: python python-2.7

我在使用codecademy.com时在python中有一个非常简单的函数。代码通过了练习,但它确实导致了最大的递归错误,我不明白为什么。这就是我所拥有的:

n = [3, 5, 7]

def double_list(x):
    for i in range(0, len(x)):
        x[i] = x[i] * 2
    return double_list(x)

print double_list(n)

2 个答案:

答案 0 :(得分:6)

因为在double_list你再次打电话给double_list

return double_list(x)

这将导致你进入无限循环,除非你设置一个应该破坏的条件。

OP已经解决了,这是他的解决方案:

n = [3, 5, 7]

def double_list(x):
    for i in range(0, len(x)):
        x[i] = x[i] * 2
    return x

print double_list(n)

答案 1 :(得分:2)

你忘记了一个基本案例。每个递归函数都应该有一个基本情况。它不停地呼唤自己,因此达到最大深度。

该行

return double_list(x)

一次又一次地调用相同的函数。