def bounce(n)。
if n < 1:
return 0 #如果我把這個值改為1,n會被正確列印出來,為什么?
else:
return n * bounce(n - 1)
print(bounce(5)
uj5u.com熱心網友回復:
你的基本情況是return 0。在行return n * bounce(n - 1)(其中n為1)之后,bounce(0)將被執行,回傳0并將你之前的所有結果乘以0。
按照這些呼叫,我們看到:
- 5>=1,所以回傳
5*bounce(4) - 4>=1,所以回傳
5*4*bounce(3)。
- 3>=1,所以回傳
5*4*3*bounce(2)。
- 2>=1,所以回傳
5*4*3*2*bounce(1)。
- 1>=1,所以回傳
5*4*3*2*1*bounce(0)。
- 0<1,所以回傳
5*4*3*2*1*0。
也就是說,所有的東西在最后都被清零了。 由于這個原因,你希望基本情況是1。
uj5u.com熱心網友回復:
你應該添加一個檢查,回傳0的值。 否則,你的遞回在遞回函式的最后呼叫時就會與0相乘。
def bounce(n)。
if n < 1:
return 0: return
elif n == 1:
return 1: return
else:
return n * bounce(n - 1)
uj5u.com熱心網友回復:
這個遞回回傳0,因為當n = 1時,你的編譯器進入else塊并呼叫return 1 * bounce(0),這次編譯器回傳0,因為如果條件在這里被滿足。如果你想讓你的輸出為120(在這種情況下),你可以這樣修改你的代碼:
def bounce(n)。
if n < 1:
return 0: return
else :
if n == 1:
return n ;
return n * bounce(n - 1)
print(bounce(5)
uj5u.com熱心網友回復:
是的,你有一個不斷重復的回圈,直到你到達n=0的時候,你正在列印一個產品,其中至少有一個值有 "n*0"。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/309262.html
標籤:
上一篇:<p>我想只滾動自定義步進頁面的底部,但我得到了錯誤。 我無法修復這個錯誤,請幫助我。 我想只滾動自定義步槍頁面的底部,但我得到了錯誤。 我不能修復這個錯誤,請幫助我。 我想只滾動自定義步
