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