我在使用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)
我在使用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_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)
謝謝你,我只是把它改成'return(x)'而且修復了它。 – 2013-05-04 13:36:19
呵呵,有時你需要大聲說出一些事情,然後才意識到自己做錯了什麼。不要忘記標記答案是正確的:) – Torxed 2013-05-04 13:37:26
我會盡快將其標記爲正確的,強制性的13分鐘還沒有通過。感謝您的幫助:) – 2013-05-04 13:40:21
你忘了一個基本情況。每個遞歸函數都應該有一個基本的例子。它不斷調用自身,因此達到最大深度。
線
return double_list(x)
一次又一次地調用相同的功能。
謝謝@sukrit我改變它返回(x),並解決它。 – 2013-05-04 13:38:25
您的遞歸函數沒有任何中斷條件。 – 2013-05-04 13:35:41
這個功能顯然永遠不會結束。我的意思是,多想一點。你永遠不會退出它,只要一遍又一遍地繼續使用相同的列表。 – darxsys 2013-05-04 13:36:37
作爲樣式註釋,'return x'比'return(x)'更受歡迎。由於Python的首要目標之一是應該可讀,所以很少有重要的事情。有關更多詳細信息,請參見[PEP8 Python風格指南](http://www.python.org/dev/peps/pep-0008/)。 – msw 2013-05-04 13:44:20