我正在尝试在 Swift 5 中实现斐波那契函数。当我在 Xcode Playground 上实现该函数时(我从CSDojo 的 youtube 视频中获取了该函数的代码),我遇到了这个错误消息
错误:执行被中断,原因:EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=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...