Swift FIB:执行被中断,原因:EXC_BAD_指令(代码=EXC_1386_INVOP,子代码=0x0)

Swift FIB:执行被中断,原因:EXC_BAD_指令(代码=EXC_1386_INVOP,子代码=0x0),swift,Swift,我正在努力学习Swift,并编写了一个简单的fib函数 func fib(n: Int) -> Int { if n == 0 { return 0 } var nums = [0, 1] for i in 2...n { nums[i] = nums[i-1] + nums[i-2] } return nums[n] } fib(2) 它给了我以下错误: ERROR: Execution was inter

我正在努力学习Swift,并编写了一个简单的fib函数

func fib(n: Int) -> Int {
    if n == 0 {
        return 0
    }
    var nums = [0, 1]
    for i in 2...n {
        nums[i] = nums[i-1] + nums[i-2]
    }
    return nums[n]
}
fib(2)
它给了我以下错误:

ERROR: Execution was interrupted, reason: EXC_BAD_INSTRUCTION (code-EXC_1386_INVOP, subode=0x0)

要将项添加到数组的末尾,必须调用
append()
方法。 不能通过将值指定给等于数组的索引来扩展数组 伯爵。所以你应该换一个

nums[i] = nums[i-1] + nums[i-2]

(但请注意,计算斐波那契数并不需要数组, 因为记住最后两个值就足够了。)

nums.append(nums[i-1] + nums[i-2])