Swift 斯威夫特运动场中的斐波那契

Swift 斯威夫特运动场中的斐波那契,swift,Swift,有人能告诉我为什么我写的这段代码只在userInput小于94之前有效吗 func calculateFibonacciFucntionUntil(userInput: Int) { var array = [0 ,1] for i in 2...userInput { array.append(i) array[i] = array[i - 1] + array[i - 2] print(array[i]) } } cal

有人能告诉我为什么我写的这段代码只在
userInput
小于94之前有效吗

   func calculateFibonacciFucntionUntil(userInput: Int) {
    var array = [0 ,1]
    for i in 2...userInput {
      array.append(i)
      array[i] = array[i - 1] + array[i - 2]
        print(array[i])
    }
}

calculateFibonacciFucntionUntil(userInput: 10)

问题在于
Int
只能存储64位数字(在64位平台上),而Fibonacci 95大于64位上可以存储的最大数字

斐波那契95是
3194043463499009905
,而
Int64
能容纳的最大数字是
2^63-1=9223 372 036 854 775 807

Swift没有用于存储大量数字的内置类型,因此,如果您想这样做,您需要使用第三方库或自己实现适当的数据类型。

Int64(签名)可以容纳的最大值为2^63-1。请查看此答案: