我正在编写一个程序,用于计算从1到n之间所有奇数的总和:
oddSum' n result | n==0 = result
| otherwise = oddSum' (n-1) ((mod n 2)*(n)+result)
oddSum n = oddSum' n 0
我的输入得到了两个错误(下面是它们),我正在使用尾递归,那么为什么会发生堆栈溢出?(注意:我在Ubuntu上使用Hugs)
oddSum 20000 ERROR - 控制堆栈溢出
oddSum 100000 ERROR - 垃圾回收无法回收足够的空间
ghc -O
编译它,其严格性分析器可能会检测到oddSum'
在第二个参数上是严格的,并自动插入所需的seq
。 - Joachim Breitner