簡體   English   中英

理解簡單的遞歸 function

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

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