猴子吃桃問題

題:猴子第一天摘下若干個桃子,立即吃了一半,不過癮,又多吃了一個。次日早上又將剩下的桃子吃掉一半,又多吃了一個。之後天天早上都吃了前一天剩下的一半零一個。到第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))
相關文章
相關標籤/搜索