下面的代码计算一个特定数字的斐波那契数列的总数。
但是会抛出 StackOverFlow 异常。当我在函数中检查 0 时,为什么会抛出这个异常?
object fibonacci extends Application {
def fibonacci(i : Int) : Int = {
println(i)
if(i == 0) 0
if(i == 1) 1
fibonacci(i - 1) + fibonacci(i - 2)
}
fibonacci(3)
}
错误 :
scala> fibonacci(3)
3
2
1
0
-1
-2
-3
-4
-5
-6
-7
-8
-9
.......
scala> fibonacci(3)
java.lang.StackOverflowError
at .fibonacci(<console>:10)
at .fibonacci(<console>:10)
at .fibonacci(<console>:10)
at .fibonacci(<console>:10)