SML 中的斐波那契数列

Fibonacci sequence in SML

  1 fun fib 0 = 0                                                                   
  2     | fib 1 = 1                                                                 
  3     | fib n = (fib n-1) + (fib n-2)                                             
  4                                                                                 
  5 val x = fib 8 

斐波那契数列中第 n 个数的这种实现有什么不正确的地方?当我 运行 程序挂起时...

fib n - 1 等同于 (fib n) - 1,而不是 fib (n - 1)。所以行 fib n = (fib n - 1) + (fib n - 2) 再次调用 fib n,导致无限递归。

要解决此问题,请添加括号。