鱼C论坛

 找回密码
 立即注册
查看: 1757|回复: 4

[已解决]老师,请教一个问题

[复制链接]
发表于 2021-5-17 01:48:16 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
QQ图片20210517014445.png
老师,请问一下,为什么在POW函数里面要用 i-1而在后面又要用一个 i= i+1
最佳答案
2021-5-17 02:51:04
1、首先明确算法,也就是解题思路
第1格是2的0次幂也就是1,第2格是2的1次幂……第n格是2的n-1次幂
前1格和 = 第1格
前2格和 = 第2格 + 前1格和
前3格和 = 第3格 + 前2格和
……
前n格和 = 第n格 + 前n格和
======================>有算法了就开始写代码
i = 1    # 定义格子变量,从第1格开始算
sum = 0        # 求和的结果,初始为0(还没开始计算当然和是0)
while i <= 64:  # 一共有64格,循环到格数为64则计算完毕,跳出循环
        wheats = pow(2, i-1)   # pow为幂运算函数,参数1是底数,i-1是幂,根据算法,第n格的小麦数是2的n-1次幂
        sum = sum + wheats   # 把前n-1次的求和结果,加上当前格的小麦数,赋值给第n格的求和结果
        i = i+1  # 第i格计算完毕,加1后,进入循环头部判断,没到64格则算i+1格结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-17 02:10:27 | 显示全部楼层
这个代码里i有计数器的功效, 同时也辅助计算。
1)pow里的i-1仅仅是得到一个数字,交给pow函数来用,并不会改变i的值。
2)后面的i=i+1是为了进入下次循环i能够+1,算是计数器。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-17 02:51:04 | 显示全部楼层    本楼为最佳答案   
1、首先明确算法,也就是解题思路
第1格是2的0次幂也就是1,第2格是2的1次幂……第n格是2的n-1次幂
前1格和 = 第1格
前2格和 = 第2格 + 前1格和
前3格和 = 第3格 + 前2格和
……
前n格和 = 第n格 + 前n格和
======================>有算法了就开始写代码
i = 1    # 定义格子变量,从第1格开始算
sum = 0        # 求和的结果,初始为0(还没开始计算当然和是0)
while i <= 64:  # 一共有64格,循环到格数为64则计算完毕,跳出循环
        wheats = pow(2, i-1)   # pow为幂运算函数,参数1是底数,i-1是幂,根据算法,第n格的小麦数是2的n-1次幂
        sum = sum + wheats   # 把前n-1次的求和结果,加上当前格的小麦数,赋值给第n格的求和结果
        i = i+1  # 第i格计算完毕,加1后,进入循环头部判断,没到64格则算i+1格结果
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-17 12:06:51 | 显示全部楼层
代码这样改是不是好理解一些?
sum = 0
for i in range(64):
    sum += pow(2 , i)
print("舍罕王应该给达依尔" , sum , "粒麦子!")
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-19 23:19:49 | 显示全部楼层
明白了,谢谢各位老师的细心解释
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-15 21:03

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表