猴子吃桃问题

题:猴子第一天摘下若干个桃子,立即吃了一半,不过瘾,又多吃了一个。次日早上又将剩下的桃子吃掉一半,又多吃了一个。之后天天早上都吃了前一天剩下的一半零一个。到第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))
相关文章
相关标签/搜索