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