2
我有以下的遞歸函數,我需要轉換爲迭代方案將迭代函數定義爲迭代?
(define (f n)
(if (< n 3) n
(+
(f (- n 1))
(* 2 (f(- n 2)))
(* 3 (f(- n 3)))
)
))
我的問題是,我在將其轉換爲迭代困難(即做遞歸具有線性執行時間)。我能想到沒有辦法做到這一點,因爲我無法弄清楚如何做到這一點。
的功能定義如下:
f(n) = n if n<3 else f(n-1) + 2f(n-2) + 3f(n-3)
我試圖來計算的話5線,像這樣
1 + 2 + f(3) + f(4) + f(5)
但爲了計算說f(5)
我d需要參考f(4), f(3), f(2)
和f(4)
我必須參照f(3), f(2), f(1)
這是SICP書籍中的一個問題。
是的,我們這些誰研究SICP可辨別該來自即時。 ;) – J0e3gan
你有什麼提示嗎? – user50449