hewei130 发表于 2021-5-17 01:48:16

老师,请教一个问题


老师,请问一下,为什么在POW函数里面要用 i-1而在后面又要用一个 i= i+1

suchocolate 发表于 2021-5-17 02:10:27

这个代码里i有计数器的功效, 同时也辅助计算。
1)pow里的i-1仅仅是得到一个数字,交给pow函数来用,并不会改变i的值。
2)后面的i=i+1是为了进入下次循环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格结果

jackz007 发表于 2021-5-17 12:06:51

代码这样改是不是好理解一些?
sum = 0
for i in range(64):
    sum += pow(2 , i)
print("舍罕王应该给达依尔" , sum , "粒麦子!")

hewei130 发表于 2021-5-19 23:19:49

明白了,谢谢各位老师的细心解释{:5_101:}
页: [1]
查看完整版本: 老师,请教一个问题