題:猴子第一天摘下若干個桃子,立即吃了一半,不過癮,又多吃了一個。次日早上又將剩下的桃子吃掉一半,又多吃了一個。之後天天早上都吃了前一天剩下的一半零一個。到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少。python
解:函數
#!/usr/bin/python # -*- coding: UTF-8 -*- x2 = 1 for day in range(9,0,-1): x1 = (x2 + 1) * 2 x2 = x1 print(x1)
這裏是一個沒見過的range()用法,原來還能夠倒着走。spa
*************************************************************code
而後發現,好像還能用遞歸解決:blog
n = 1 def func(x): global n x = (x + 1) * 2 print("第%d天還有%d個桃子" %(10-n,x)) n = n + 1 while n < 10: func(x) return '--------以上---------' print(func(1))
反反覆覆終於寫了出來,須要注意的地方:若是在函數內不引入全局變量n,會報錯;若是把 n = 1 寫在函數裏面,又會無限循環。遞歸
發現原來本身動手能力這麼差,看來須要多思考,多練,多敲。input
-----------------------分割線------------------------------------------class
改進了一下,能夠輸入不一樣的條件求答:變量
print("下面請用數字輸入在第幾天的時候還有幾個桃子") n = int(input("在第幾天的時候:")) x = int(input("還有多少個桃子:")) i = 1 def func(x): global i x = (x + 1) * 2 print("第%d天的時候還有%d個桃子" %(n-i,x)) i = i + 1 while i<n : func(x) return '-----------以上-----------' print(func(x))