【问题标题】:Fibonacci in swift playground [duplicate]快速操场上的斐波那契[重复]
【发布时间】:2018-10-24 18:37:23
【问题描述】:

有人可以指导我为什么我写的这段代码只能在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)

【问题讨论】:

标签: swift


【解决方案1】:

问题在于Int 只能存储 64 位数字(在 64 位平台上)并且斐波那契 95 大于 64 位上可以存储的最大数字。

斐波那契 95 是31 940 434 634 990 099 905,而Int64 可以容纳的最大数是2^63-1 = 9 223 372 036 854 775 807

您可以使用Decimal 存储比Int 可以容纳的更大的数字Decimal.greatestFiniteMagnitude3.4028236692093865e+165

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

【讨论】:

  • (有符号的)Int64 可以容纳的最大值是 2^63-1。
猜你喜欢
  • 2012-11-29
  • 1970-01-01
  • 2013-11-13
  • 2019-04-25
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2012-12-29
  • 1970-01-01
相关资源
最近更新 更多