0
我有以下代码:表达的类型为int,但使用类型单位
#light
let rec fib n =
if n=0 || n=1 then 1 //<- here on the "1"
n + fib n-1 + fib n-2
如何解决这个问题? [我见过this但它没有帮助]
我有以下代码:表达的类型为int,但使用类型单位
#light
let rec fib n =
if n=0 || n=1 then 1 //<- here on the "1"
n + fib n-1 + fib n-2
如何解决这个问题? [我见过this但它没有帮助]
您错过了else
。您还需要一些额外的括号:
#light
let rec fib n =
if n=0 || n=1 then 1
else n + fib (n-1) + fib (n-2)
作参考之用:如果没有括号,它读作(N)+(FIB N) - (1)+(FIB N) - (2)'。 – Chuck 2009-09-28 06:11:35
@Chuck:是的,从'fib n'调用'fib n'导致无限递归结束于Stack Overflow ...; ^) – 2009-09-28 06:15:43