Python 为什么此函数会导致最大重现错误?

Python 为什么此函数会导致最大重现错误?,python,python-2.7,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) 因为在您的double\u列表中您又在调用double\u列表

我在使用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)

因为在您的
double\u列表中
您又在调用
double\u列表

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)

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

线路

return double_list(x)

反复调用同一函数。

递归函数没有任何中断条件。此函数显然是永无止境的。我是说,多想想这个。你永远都不会退出它,只是一遍又一遍地使用相同的列表。作为一种风格说明,
return x
return(x)
更受欢迎。因为Python的首要目标之一是可读性,所以小事情很重要。有关详细信息,请参阅。@msw感谢您的链接谢谢,我刚刚将其更改为
return(x)
,这就解决了问题。呵呵,有时候,在意识到自己做错了什么之前,你需要大声说出来。别忘了把答案标为正确:)我会尽快把它标为正确,规定的13分钟还没有过去。谢谢你的帮助:)谢谢@sukrit我把它改成了return(x),这就解决了问题。