[英]Simple recursion function in python
對編碼尤其是功能非常陌生。 我正在嘗試創建一個遞歸 function,它從n == 1
開始,將n
除以二,然后繼續將下一個數字除以二。 數學方法是fn = fn-1/2
。 代碼如下
def half(n):
return half(n/2)
half(1)
但我不斷收到“超出最大遞歸深度”
請幫忙?
你需要為遞歸設置一個限制,你不能顯示無限 Something like when if n>0.00001: return half(n/2) else return n
您在 Python 中達到遞歸限制。如果 Python 沒有停止在最大遞歸深度,您的 function 將導致無限遞歸。
您可以用與其數學公式幾乎相同的方式定義 function,但您需要一些方法來停止遞歸(即不需要遞歸來獲得答案的基本情況)。
例如,如果已知 f(0) 的結果為 1,那么這是基本情況,您可以在不再次調用 function 的情況下返回答案:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.