我一直在這個問題上停留了一段時間,無法想象如何解決它。在SML中創建一個迭代函數
考慮以下函數f:N→N。
F(0)= 2,F(1)= 0,F(2)= 3,
F(N)= 3F(N-3)+ 2F(N-2) - F( n-1)。
定義f的迭代版本。
我知道我的解決辦法應該是這個樣子
fun myFun 0 = 2
| myFun 1 = 0
| myFun 2 = 3
| myFun n =
let
(* code *)
in
funHelp(3,2,0,n)
end ;
我知道迭代功能僅想使用一個遞歸調用,同時讓論據做的所有工作。不過,我無法弄清楚如何解決這個問題。任何幫助將非常感激!
這不是一個迭代的解決方案 - 它必須是尾遞歸的。 –