heiwuchang207 发表于 2022-6-26 15:18:46

舍罕王的失算、、没看懂啥意思!!

相传国际象棋是古印度舍罕王的宰相达依尔发明的。
舍罕王十分喜爱国际象棋,便决定让宰相自己选择何种赏赐。这位聪明的宰相指着 8×8 共 64 格的象棋棋盘说:陛下,请您赏给我一些麦子吧。就在棋盘的第 1 格中放 1 粒,第 2 格放 2 粒,第 3 格放 4 粒,以后每一格都比前一格增加一倍,依此放完棋盘上 64 格,我就感激不尽了……
舍罕王听了达依尔这个“小小”的要求,便让人扛来一袋麦子,他要兑现许诺。结果,在给达依尔发放麦子时,舍罕王发现他要给达依尔的麦子比自己想象的要多得多,一袋麦子是远远不够的……

编程计算舍罕王应该给达依尔多少粒麦子?

问题:
1、为什么循环是i <= 64。
2、为什么pow()是2,i-1,第一次循环i的值是1那pow函数2的i-1次方那不是2的0次方了?

i = 1
sum = 0

while i <= 64:
    wheats = pow(2, i-1)
    sum = sum + wheats
    i = i + 1

print("舍罕王应该给达依尔", sum, "粒麦子!")

风车呼呼呼 发表于 2022-6-27 12:27:54

1.总共64格,否则你认为该循环到多少呢
2.第一次是1,2的0次方有啥问题。。非0数的0次方为1这简单数学常识啊

heiwuchang207 发表于 2022-6-27 13:08:38

风车呼呼呼 发表于 2022-6-27 12:27
1.总共64格,否则你认为该循环到多少呢
2.第一次是1,2的0次方有啥问题。。非0数的0次方为1这简单数学常识 ...

这么说那现在 i 是0,循环到下面 i = i + 1 ,那么循环从新开始,那么pow(2, i - 1)那 i 不是又等于 0 ?   那这样 i 的值不应该只能是0或1,不成了死循环!!!

hveagle 发表于 2022-6-27 13:45:28

heiwuchang207 发表于 2022-6-27 13:08
这么说那现在 i 是0,循环到下面 i = i + 1 ,那么循环从新开始,那么pow(2, i - 1)那 i 不是又等于 0...

你这样是对的,因该把-1去掉

hveagle 发表于 2022-6-27 13:47:27

hveagle 发表于 2022-6-27 13:45
你这样是对的,因该把-1去掉

哦不对,你理解错了。这个-1不是把i给减了1,只有i = i - 1或者i -= 1才会i减少1

hveagle 发表于 2022-6-27 13:50:13

所以i还是1,下次循环后,i为2。至于2的0次方吗。。。。。。就把i = 1改成i = 2

风车呼呼呼 发表于 2022-6-27 14:00:18

heiwuchang207 发表于 2022-6-27 13:08
这么说那现在 i 是0,循环到下面 i = i + 1 ,那么循环从新开始,那么pow(2, i - 1)那 i 不是又等于 0...

传的是 i-1 的值,和 i 有什么关系?i=1 时和 i=2 时。带入这个式子,它们的值会相等会循环吗?

heiwuchang207 发表于 2022-6-27 14:27:55

风车呼呼呼 发表于 2022-6-27 12:27
1.总共64格,否则你认为该循环到多少呢
2.第一次是1,2的0次方有啥问题。。非0数的0次方为1这简单数学常识 ...

是不是这么个意思!!!
代码:
i = 1
sum = 0

while i <= 64:
    wheats = pow(2, i-1)
    sum = sum + wheats
    i = i + 1
运行流程:
第一次运行i=1,进入循环,(pow函数2的i-1次方,用的是i减1的值,也就是2的0次方)并不改变i本身的值。sum等于1
第二次运行i=2,进入循环,(pow函数2的i-1次方,用的是i减1的值,也就是2的1次方)2的1次方也就是2。sum=1+2
第三次运行i=3,进入循环,(pow函数2的i-1次方,用的是i减1的值,也就是2的2次方)2的2次方也就是4。
sum=1+2+4

heiwuchang207 发表于 2022-6-27 14:36:42

hveagle 发表于 2022-6-27 13:50
所以i还是1,下次循环后,i为2。至于2的0次方吗。。。。。。就把i = 1改成i = 2

i = 1改成i = 2是不对的
这样的话不符合题意第一格放一粒麦子,因为2的1次方是2

风车呼呼呼 发表于 2022-6-27 14:40:37

heiwuchang207 发表于 2022-6-27 14:27
是不是这么个意思!!!
代码:
i = 1


是。不要光盯着代码,对照问题描述,符合了就对了

kkl44stupid 发表于 2022-6-27 19:28:02

{:10_256:}

kkl44stupid 发表于 2022-6-27 19:29:24

{:10_261:}

kkl44stupid 发表于 2022-6-27 19:30:15

{:10_261:}

kkl44stupid 发表于 2022-6-27 19:30:58

{:10_279:}

kkl44stupid 发表于 2022-6-27 19:31:35

{:10_249:}

17856563101 发表于 2022-8-25 15:01:37

{:10_249:}
页: [1]
查看完整版本: 舍罕王的失算、、没看懂啥意思!!