我们首先来看一下具体的问题。
猴子第一天摘下若干个桃子,当即吃了一半,还不瘾,又多吃了一个第二天早上又将剩下的桃子吃掉一半,又多吃了一个。以后每天早上都吃了前一天剩下的一半零一个。到第10天早上想再吃时,见只剩下一个桃子了。求第一天共摘了多少。
比较简单的解法,是可以采用逆向思维的方法来进行求解,具体如下图所示:
# 将最后一天的剩余桃子数1赋值给m,第一天猴子采的总数为n
m = 1 # 将最后一天桃子的数量赋值给m
for i in range(9,0,-1): # 逆向循环求得总数
n = (m+1)*2 # 将后一天的数量赋值给前一天
m = n
print(n) # 打印出结果
可以看到这种解法非常的简单。
当然啦,除此之外,我们还可以使用递归函数进行实现
def f(n): #我们首先定义一个函数
if n == 1: # 如果n=1 的时候 返回值为1
return 1
else: # 否则,返回值为其前一天的数
return (f(n-1)+1)*2
print(f(10))
for _ in range(10,0,-1):
print("第",_," 天对应的数量为:",f(_))
这种方式,打印出来的结果如下所示:
1534
第 10 天对应的数量为: 1534
第 9 天对应的数量为: 766
第 8 天对应的数量为: 382
第 7 天对应的数量为: 190
第 6 天对应的数量为: 94
第 5 天对应的数量为: 46
第 4 天对应的数量为: 22
第 3 天对应的数量为: 10
第 2 天对应的数量为: 4
第 1 天对应的数量为: 1
好了,以上就是今天我们分享的内容啦!
2020年2月23日
北京市通州区京贸中心
网友评论