猴子吃桃问题三种方法


#题目:猴子第一天在下若干个桃子,当即吃了一半,还不过瘾,有多吃了一个
#第二天早上又将剩下的桃子吃掉一半,有多吃了一个。以后每天早上都吃了前
#一天剩下的一半多一个。到第十天早上想在吃,见只剩下一个桃子了。
#求:第一天总共摘了多少桃子??

#总共num个桃子
#第一天剩下num/2-1
#第二天剩下(num/2-1)/2 - 1
#第三天剩下((num/2-1)/2 - 1)/2 - 1
#......
#第十天剩1个

#第十天s10 = 1
#第九天s9 = 2(s10+1) = 2s10 + 2
#...
#Sn = 2S(n+1)+2
'''
#递归方法
while True:
    day = int(input('请输入要查询的是第几天的桃子数量:'))
    def num_recu(day):
        if day == 10:
            return 1
        else:
            return 2*num_recu(day+1)+2
    if day<11 and day>0:
        sum = num_recu(day)

        print('第%d天共有%d个桃子'%(day,sum))
        print('')
    else:
        print('输入错误,请重新输入')

#for循环

x1,x2 = 0,1
for day in range(9,0,-1):
    x1 = (x2+1)*2
    x2 = x1
print('第%d天共有%d个桃子'%(day,x1))
这个版本看不懂我的哥

p = 1
print('第10天吃之前就剩1个桃子')
for i in range(9,0,-1):#从9到1,步长为-1,也就是从9到1倒着循环
    p = (p+1)*2
    print('第%d天吃之前还有%d个桃子'%(i,p))
print('第一天共在了%s个桃子'%p)

p=1
第一次循环是第九天,p=(1+1)*2 =4
第九天还有4个桃子
第二次循环 i = 8,所以第八天p = (4+1)*2 = 10个桃子
第三次循环 i = 7,所以第七天p = (10+1)*2 = 22个桃子
......

'''
#while语句
day,p,x2 = 9,0,1
print('第9天吃之前还有1个桃子')
while day>0:
    p = (x2+1)*2
    x2 = p
    print('第%d天吃之前有%d个桃子'%(day,p))
    day-=1
    





    

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM