0

Swift 5 でフィボナッチ関数を実装しようとしています。Xcode Playground で関数を実装しているときに ( CSDojo の YouTube ビデオから関数のコードを取得しました)、このエラー メッセージが表示されました。

エラー: 実行が中断されました。理由: EXC_BAD_INSTRUCTION (コード=EXC_I386_INVOP、サブコード=0x0)

最初は、エラーは添え字のインデックスが範囲外であるに違いないと思っていました。そのため、コードを再度確認しましたが、問題はないようです。Xcode Playground を実行しようとすると、なぜこのエラー メッセージが表示されるのでしょうcomputeFiboBottomUp(n: 100)か。まで正常に動作しますcomputeFiboBottomUp(n:35)

コンパイラが処理するには、スタックに再帰呼び出しが多すぎるためですか? または、コードにエラーが含まれている可能性がありますか?

func computeFiboBottomUp(n: Int) -> Int {
    var bottom_up: [Int?] = []
    if bottom_up.isEmpty {
        for _ in 0...n {
            bottom_up.append(nil)
        }
    }
    if n == 1 || n == 2 { return 1 }
    bottom_up[1] = 1
    bottom_up[2] = 1
    for i in 3...n {
        bottom_up[i] = bottom_up[i-1]! + bottom_up[i-2]!
    }
    return bottom_up[n]!
}

computeFiboBottomUp(n: 5)
computeFiboBottomUp(n: 35)
computeFiboBottomUp(n: 100) // error...
4

1 に答える 1