Python遞迴函式的例項
阿新 • • 發佈:2019-01-23
一球從100米高度自由落下,每次落地後反跳回原高度的一半;
再落下,求它在第10次落地時,共經過多少米?第10次反彈多高?
def heigthM(num, heigth, sum): sum += heigth heigth /= 2 #第一次返回高度50 print(heigth, sum) # 檢視每次返回的高度和經過多少米 if num == 1: return heigth ,sum else: sum += heigth # 返回到最高點時,經過多少米需要加上高度 return heigthM(num - 1, heigth, sum) print(heigthM(10, 100, 0)) #num是次數,heigth是高度,sum是經過多少米
有5個人坐在一起,問第五個人多少歲?他說比第4個人大2歲。
問第4個人歲數,他說比第3個人大2歲。問第三個人,又說比第2人大兩歲。
問第2個人,說比第一個人大兩歲。最後問第一個人,他說是10歲。請問第五個人多大?
def ageNum(age):
if age == 1:
return 10
else:
return ageNum(age - 1) + 2
print(ageNum(5))
猴子吃桃問題:猴子第一天摘下若干個桃子,
當即吃了一半,還不癮,又多吃了一個第二天早上又將剩下的桃子吃掉一半,
又多吃了一個。以後每天早上都吃了前一天剩下的一半零一個。
到第10天早上想再吃時,見只剩下一個桃子了。求第一天共摘了多少?
def monkey(n):
if n == 1:
return 1
else:
return (monkey(n - 1) + 1) * 2
print(monkey(10))