FIB:执行被中断,原因:EXC_BAD_INSTRUCTION(代码= EXC_1386_INVOP,子代码= 0x0)

时间:2014-08-05 20:01:36

标签: 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 interrupted, reason: EXC_BAD_INSTRUCTION (code-EXC_1386_INVOP, subode=0x0)

1 个答案:

答案 0 :(得分:0)

要将项添加到数组的末尾,您必须调用append()方法。 您不能通过为等于数组的索引赋值来扩展数组 计数。所以你应该替换

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

通过

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

(但请注意,你真的不需要一个数组来计算Fibonacci数, 因为它足以记住最后的两个值。)

相关问题