python递归函数案例

忘是亡心i 2023-06-21 13:28 55阅读 0赞

1、月工资按天发放,第一天给你一分钱,然后,后一天是前一天的 2 倍,那么30天后工资为多少?

解题思路:

第一天 0.01

第二天 0.01 * 2

第三天 0.01 * 2^2

第30天 0.01 * 2^29

代码如下:

  1. def money(n):
  2. if n <= 1:
  3. return 0.01
  4. else:
  5. return money(n-1)+0.01*2**(n-1)
  6. print(money(30))

运行结果:

  1. 10737418.23

2、猴子每天吃比前一天的一半还多1个桃,第十天的时候剩一个桃子,问你第一天有多少个桃子?

解题思路:

  1. 1天:num(1)=(num(2)+1)*2
  2. ....
  3. 8天:num(8) = (num(9)+1)*2
  4. 9天:num(9) = (1+1)*2
  5. 10天:1

代码如下:

  1. def num(d):
  2. if d >= 10:
  3. return 1
  4. else:
  5. return (num(d+1)+1)*2
  6. print(num(1))

运行结果:

  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)

代码如下:

  1. def height(n):
  2. # 经过的高度
  3. if n == 1:
  4. return 100
  5. else:
  6. return height(n-1)+100*((1/2)**(n-2))
  7. def h1(n):
  8. # 反弹的高度
  9. if n == 1:
  10. return 50
  11. else:
  12. return h1(n-1)/2
  13. print('第10次落地一共经过',height(10))
  14. print('第10次反弹的高度为',h1(10))

运行结果:

  1. 10次落地一共经过 299.609375
  2. 10次反弹的高度为 0.09765625

发表评论

表情:
评论列表 (有 0 条评论,55人围观)

还没有评论,来说两句吧...

相关阅读