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

在Swift Playground中如何编写数值逐天翻倍的while循环?

问题原因定位

你遇到的无限执行问题基本是以下两种常见错误导致的:

  • 循环终止条件设置错误,比如没有给计数变量做递增,导致永远达不到终止阈值
  • 金额变量的翻倍逻辑写在了循环条件判断的位置,而非循环体内部,触发死循环

常见错误写法示例(会触发死循环):

var day = 1
var dailyPenny = 1
// 错误:没有在循环内给day做递增,day永远等于1,永远满足<=30的条件
while day <= 30 {
    print(dailyPenny)
    dailyPenny *= 2
}

正确实现代码

按30天的常规月份计算,正确可运行的实现如下:

// 初始化:第一天的便士数额为1
var dailyPenny = 1
// 初始化:月末累计总额
var totalPenny = 0

// 固定范围for-in循环从根源避免死循环
for day in 1...30 {
    print("第\(day)天便士数额:\(dailyPenny)")
    totalPenny += dailyPenny
    // 当日统计完成后再翻倍计算下一日数额
    dailyPenny *= 2
}

print("月末总便士数额:\(totalPenny),换算为英镑为:\(Double(totalPenny)/100)")

代码说明

  • 用固定范围的for-in循环替代手动计数的while循环,可完全避免计数变量未更新导致的死循环问题
  • 翻倍逻辑放在每日金额统计完成之后,不会出现首日金额计算错误的问题
  • 如需适配不同天数的月份,只需要把1...30的上限修改为对应月份的天数即可,支持28、29、31天的月份适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:15:03