[英]Understanding simple recursive function
我不明白以下代碼的 output 為何為 3?
我得到 n %= 5 output 4 which go 到 else 語句。 所以它應該是 return rec(4-1) + rec(4-2) 那么這個 output 3 怎么樣?
def rec(n):
n %= 5
if n <= 1:
return n
else:
return rec(n-1) + rec(n-2)
print(rec(9))
output:3
當我對代碼運行一些測試時,您輸入的值將 n 重新定義為 3。這將執行 else 語句,該語句為 rec(3-1) 生成值 2,為 rec(3-2) 生成值 1。 這使 function 返回值 2+1,這是您的 3 output 的來源。
解決此類問題的最佳方法是跟蹤遞歸調用:
rec(9):
n = 4 # ( 9 % 5)
return (rec(3) + rec(2)) # rec(n-1) + rec(n-2)
rec(3):
n = 3
return rec(2) + rec(1) # rec(n-1) + rec(n-2)
rec(2):
n = 2
return rec(1) + rec(0)
rec(0) = 0
rec(1) = 1
rec(2) = 1
rec(3) = 2
因此rec(9) = 3
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.