猴子爱吃桃子,但有一天它只剩下一堆桃子了,于是它开始吃,每次吃掉一半再多吃一个,直到最后一只桃子被吃完,这个过程可以用递归来实现。
def eatPeach(n):
if n == 1:
return 1
else:
return (eatPeach(n-1) + 1) * 2
上述代码中,参数n代表剩余的桃子数量,第一行if n==1是递归的出口,也就是只剩下一只桃子时停止递归,返回1;否则就进入else语句中,实现递归。每次递归都是吃掉一半再多吃一个,因此桃子数减半再加1。最终返回所有桃子吃完时的总数。
如果我们有100个桃子,那么调用eatPeach(100)即可得到解:
print(eatPeach(100)) # 1267650600228229401496703205375
结果是一个很长的整数,代表在这个过程中一共吃了多少个桃子。当桃子数量很大时,递归次数也会很多,所以在实现时要注意效率问题。