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

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章