python递归函数案例
1、月工资按天发放,第一天给你一分钱,然后,后一天是前一天的 2 倍,那么30天后工资为多少?
解题思路:
第一天 0.01
第二天 0.01 * 2
第三天 0.01 * 2^2
…
第30天 0.01 * 2^29
代码如下:
def money(n):
if n <= 1:
return 0.01
else:
return money(n-1)+0.01*2**(n-1)
print(money(30))
运行结果:
10737418.23
2、猴子每天吃比前一天的一半还多1个桃,第十天的时候剩一个桃子,问你第一天有多少个桃子?
解题思路:
第1天:num(1)=(num(2)+1)*2
....
第8天:num(8) = (num(9)+1)*2
第9天:num(9) = (1+1)*2
第10天:1
代码如下:
def num(d):
if d >= 10:
return 1
else:
return (num(d+1)+1)*2
print(num(1))
运行结果:
1534
3、一球从100米高度自由落下,每次落地后反跳回原高度的一半; 再落下,求它在 第10次落地时,共经过多少米?第10次反弹多高?
解题思路:
第一次落地经过的距离:f(1) = 100
第二次落地经过的距离:f(1)+100*(1/2)**(2-2)
第三次落地经过的距离:f(2)+100*(1/2)**(3-2)
…
第10次落地经过的距离:f(9)+100*(1/2)**(10-2)
代码如下:
def height(n):
# 经过的高度
if n == 1:
return 100
else:
return height(n-1)+100*((1/2)**(n-2))
def h1(n):
# 反弹的高度
if n == 1:
return 50
else:
return h1(n-1)/2
print('第10次落地一共经过',height(10))
print('第10次反弹的高度为',h1(10))
运行结果:
第10次落地一共经过 299.609375
第10次反弹的高度为 0.09765625
还没有评论,来说两句吧...