关于麦子的问题
疑问:最新python练习题第9讲,关于麦子计算的问题。对于给出的标准答案代码的算法,我进行验证之后,是不是只计算到了第63格应当放的麦子,而没有计算第64个的应当放的麦子数?1,我认为如果按照标准答案的代码来计算,如果要计算全部64格的应当放到麦子的总和,那么其中(i应当是:i <= 65),如果不这样的话,循环到64的时候,在计算i-1时就会变成63,所以最后就只算到了第63格,而64格就遗漏掉了。
2、如我参照我的写的这种代码就可以计算到第64格子。
以上两点我不知道说得是否有道理,还望各位老师指正!谢谢!
现将标准答案的代码和我自己编写的代码罗列如下:
①、i = 1
sum = 0
while i <= 64:##(我认为:此处如若要计算到第64格,那么应当是i<= 65)
wheats = pow(2, i-1)##(当循环到64时,此出如果再减去1 就是 63,因而最终无法计算到64格)
sum = sum + wheats
i = i + 1
print("舍罕王应该给达依尔", sum, "粒麦子!")
②、i = 0# 初始化变量 i #
sum = 0# 初始化变量 sum #
while i <= 64:
wheats =int(2**i) # 请计算每一个格子的麦子数,并将其赋值给 wheats 变量#
sum = sum + wheats
i = i + 1
print("舍罕王应该给达依尔", sum, "粒麦子!")
你是没有认真读题了,第一格是只放了一个小麦,即 2 的 0 次方 等于 1
转为代码中循环理解,第一次 i = 1 ,所以 pow(2,1-1) 即 2^0 次方
依次类推,到最后一格,即 64 格时,i = 64 ,则应给的小麦就是 2^(64-1) 次幂,即 2^63
而你的代码相当于计算到了第 65 个格子
因为你的 i 初始为 0 但是 最后 i = 64 时,麦子数就为 2^64 次方,相当于第 65 个格子
即麦子的公式是 2**(i-1) , i 是格子数,当在 64 格时候 麦子数应为 2**63
Twilight6 发表于 2020-11-13 18:22
你是没有认真读题了,第一格是只放了一个小麦,即 2 的 0 次方 等于 1
转为代码中循环理解,第一次 i...
哈哈,好像是这么回事哈,谢谢
页:
[1]