我正在尝试学习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)
答案 0 :(得分:0)
要将项添加到数组的末尾,您必须调用append()
方法。
您不能通过为等于数组的索引赋值来扩展数组
计数。所以你应该替换
nums[i] = nums[i-1] + nums[i-2]
通过
nums.append(nums[i-1] + nums[i-2])
(但请注意,你真的不需要一个数组来计算Fibonacci数, 因为它足以记住最后的两个值。)