【发布时间】:2012-02-14 14:01:25
【问题描述】:
我正在阅读Real-World Functional Programming 这本书,在阅读本书的示例(清单 10.2,第 265 页)之前,我尝试提出自己的尾递归示例。这本书的例子有效;我的导致堆栈溢出。
我发现如果我使用元组参数或预先计算a + accum,那么我的就可以了。我想明白为什么。
let rnd = new System.Random()
let test2 = List.init 1000000 (fun _ -> rnd.Next(-50, 51))
let rec sum2 list accum =
match list with
| [] -> accum
| a::b -> sum2 b a + accum
let result = sum2 test2 0
printfn "%d" result
【问题讨论】:
标签: recursion f# tail-recursion