對于一個函式p(0) = 10000, p(n) = p(n-1) 0.02*p(n-1),
代碼應該是這樣的:
def p(n,v=10000):
if n == 0:
return v
else:
return p(n-1,1.02*v)
但如果p(0) = 10000, p(n) = p(n-1) 10**(n-1),
那么這個尾遞回怎么寫呢?
uj5u.com熱心網友回復:
這應該可以解決您的問題
def p(n):
if n==0:
return 10000
else: # n!=0
return p(n-1) 0.02 * p(n-1)
print(p(0)) # The result is 10000
print(p(1)) # The result is 10200.0
第一個 if 將是遞回的基礎,即 p(0),else 將是遞回函式
uj5u.com熱心網友回復:
好吧..你已經有了尾遞回if n == 0: return v。您只需要返工非常量的回傳值。嘗試這個:
def p(n, v=10000):
if n == 0:
return v
else:
return p(n - 1, v) 10**(n - 1)
uj5u.com熱心網友回復:
這是您想要的函式的 tali 遞回代碼
def p(n,v=10000):
if n == 0:
return v
else:
return p(n-1, v 10**(n-1))
在這里,我們使用 v 作為上一個函式遞回呼叫的值,然后將 10**(n-1) 添加到它。
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/453145.html
標籤:Python python-3.x 功能 递归 尾递归
