1. 程式人生 > >Python遞迴函式的例項

Python遞迴函式的例項

一球從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))