You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift Playground中斐波那契程序随机崩溃问题求助

解决Swift Playground中斐波那契代码随机崩溃的问题

你的代码崩溃是因为整数溢出。Swift默认的Int类型是有符号整数,当斐波那契数列的数值超过当前设备Int类型的最大值时,执行num2 += num1就会触发运行时错误,导致崩溃。不同设备的Int位数不同(比如32位设备Int最大值为2^31-1,64位设备为2^63-1),所以崩溃的迭代次数看起来随机。

这里有两种可行的解决方案:

  • 使用Swift的溢出操作符:将num2 += num1替换为num2 &+= num1。&+是溢出加法操作符,当数值超出类型范围时会自动循环折返,不会触发崩溃。
    修改后的代码:

    var num1 = 0, num2 = 1
    for i in 0..<100{
        print(num1)
        var temp = num2
        num2 &+= num1
        num1 = temp
    }
    
  • 使用更大范围的整数类型:比如UInt64或Int64,这些类型能容纳远大于普通Int的数值,大幅延迟溢出的发生(甚至在100次迭代内不会溢出)。
    修改后的代码示例:

    var num1: UInt64 = 0, num2: UInt64 = 1
    for i in 0..<100{
        print(num1)
        let temp = num2
        num2 += num1
        num1 = temp
    }
    

内容的提问来源于stack exchange,提问作者Bananenkris

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 04:15:06