第一次在這里發帖。Python 新手并嘗試更好地理解遞回和輸入函式。在這段代碼中,我試圖獲取用戶輸入(x)并將其傳遞給遞回函式。我認為它會列印一個(x)數字串列,其中每個連續數字的差異減少 1。無論它做什么,我都會學習,但我真的只想知道我需要更改什么才能接受用戶輸入并通過它到這個遞回函式。代碼的靈感來自這個例子:
https://www.w3schools.com/python/trypython.asp?filename=demo_recursion
謝謝。
x = int(input("Choose a number "))
def add_last(x):
result = x (add_last(x- 1))
print(result)
add_last(x)
uj5u.com熱心網友回復:
遞回函式必須總是有一個“結束”的情況,即什么時候結束遞回?
所以在 中add_last,可能添加如下內容:
if x==0:
return 0
如果沒有最終案例,您可能會遇到 RecursionError: maximum recursion depth exceeded
我認為它會列印一個 (x) 數字串列,其中每個連續數字的差異減少 1。
嗯,不。在您的函式中,您只是將整數相加,更具體地說,是將所有先前整數的總和與當前整數相加。所以你的函式的回傳值,簡直是另一個整數,特別是西格瑪的x。
編輯:
由于您沒有回傳任何內容,因此默認情況下該函式回傳None. 因此錯誤:TypeError: unsupported operand type(s) for : 'int' and 'NoneType' for the function definition。
您需要回傳一個整數才能使其作業。
編輯2:
如果您正在處理大量數字,并且可能需要多次重復,正如@CoderTang 建議的那樣,您可以使用sys.setrecursionlimit(you_new_limit), 來設定您自己的遞回限制。
uj5u.com熱心網友回復:
由于您只是在列印,因此您無需回傳任何內容。
def add_last(x):
if x == 0:
return
print(x)
add_last(x-1)
print("\n\nRecursion Example Results")
add_last(6)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395430.html
