-
初始状态:
- count = 1(第 1 格)
- wheat = 1(第 1 格放 1 粒)
-
循环过程:
- 第 1 次循环:放 1 粒,count 变为 2
- 第 2 次循环:放 2 粒,count 变为 3
- 第 3 次循环:放 4 粒,count 变为 4
- …
- 第 n 次循环:放 2^(n-1)粒,count 变为 n+1
-
循环结束时的状态:
- 当 sum <= 0 时,循环结束
- 此时 count 的值是下一格的编号
- 实际上最后一格成功的放置是 count-1 格
-
为什么是 count-2:
- 如果 sum == 0:说明刚好放满 count-1 格
- 如果 sum < 0:说明 count-1 格没有完全放满,只能算放满到 count-2 格
举例说明:
假设循环结束时:
- count = 5(表示下一格是第 5 格)
- sum < 0(表示第 4 格没有完全放满)
那么实际放满的格子是:
- 第 1 格 ✓
- 第 2 格 ✓
- 第 3 格 ✓
- 第 4 格 ✗(没放满)
所以总共放满了 3 格,即 count-2 = 5-2 = 3 格。
简单记忆:count 总是比实际放满的格子数多 1(因为循环结束后它指向下一格),当最后一格没放满时,还要再减 1。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END





暂无评论内容