非常新的編碼,尤其是功能。我正在嘗試創建一個遞回函式,該函式從 開始n == 1,除以n2,然后繼續將下一個數字除以 2。數學方法是fn = fn-1/2。代碼如下
def half(n):
return half(n/2)
half(1)
但我不斷收到“超出最大遞回深度”
請幫忙?
uj5u.com熱心網友回復:
你需要為遞回設定一個限制,你不能顯示無限類似 if n>0.00001: return half(n/2) else return n
uj5u.com熱心網友回復:
您在 Python 中遇到了遞回限制。如果 Python 沒有在最大遞回深度處停止,您的函式將導致無限遞回。
uj5u.com熱心網友回復:
您可以用與其數學公式幾乎相同的方式定義函式,但您需要某種方式來停止遞回(即不需要遞回即可獲得答案的基本情況)。
例如,如果已知 f(0) 的結果為 1,那么這就是您無需再次呼叫該函式即可回傳答案的基本情況:
def f(n):
if n==0: return 1 # base case f(0) --> 1 (stops recursion)
else: return f(n-1)/2 # recursion fn=fn-1/2
print(f(10)) # 0.0009765625 # this happens to be 1/2^10
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/329937.html
上一篇:從動態嵌套陣列生成物件的平面陣列
