猴子吃桃問題三種方法


#題目:猴子第一天在下若干個桃子,當即吃了一半,還不過癮,有多吃了一個
#第二天早上又將剩下的桃子吃掉一半,有多吃了一個。以后每天早上都吃了前
#一天剩下的一半多一個。到第十天早上想在吃,見只剩下一個桃子了。
#求:第一天總共摘了多少桃子??

#總共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