簡體   English   中英

python中的簡單遞歸function

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM