1
可能重複:
Combine memoization and tail-recursionMemoizing尾調用優化遞歸函數
所以下面是代碼我寫,尾調用使用可變累積優化
let rec counter init count =
if init = 1 then count + 1 else
match init with
| Even value -> (counter (value/2) (1 + count))
| Odd value -> (counter ((3 * value) + 1) (count+1))
let SeqBuilder (initval:int) : int =
counter initval 0
我該如何記憶?當我試圖記憶它時遇到的問題是,遞歸調用必須去memoize對象,所以你必須有一個...遞歸對象?
還是更簡單一些,我只是缺乏經驗?
現在你的計數器不是尾遞歸 – 2010-09-18 05:19:09