1

以下のコードは、特定の数に対するフィボナッチ数列の合計を計算します。

しかし、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)
4

2 に答える 2