递归三要素:
1. 递归终止条件
2. 终止时处理方法
3. 提出重复问题
例如:
1. 用递归计算出:1*2*3*4*5*6*7*8*......*n
def ride_recursion(n):
if n == 1:
return 1
return n * ride_recursion(n - 1)
print(ride_recursion(4)) ####24
2.有一对兔子,每个三天生一对兔子,打印出n天内的兔子数(不考虑兔子死亡)
第一天 1对 1
第二天 1对 1
第三天 2对 1 + 1
第四天 3对 1 + 2
第五天 5对 2 + 3
第六天 8对 3 + 5
第七天 13对 5 + 8
def rabbit_count(taday):
if taday <= 2:
return 1
return rabbit_count(taday - 1) + rabbit_count(taday - 2)
for i in range(1,10):
print(rabbit_count(i))
3. 将列表中嵌套的列表提取出来
例如:[1,2,[3,4]] 变为[1,2,3,4]
def listsToOne(lists):
result = list()
for i in lists:
if type(i) == list:
for j in listsToOne(i):
result.append(j)
else:
result.append(i)
return result
data_list = [1,2,[3,4,[5,6,[7,8],9],10],11]
print(listsToOne(data_list))#[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11]
4.桃子的计算,猴子每天吃当前桃子数量一半多一个,最后一天剩一个:
最后一天 1个
倒数两天 4个 (1 + 1) * 2
倒数三天 10个 (4 + 1) * 2
def peach_count(taday, number):
if taday == 1:
return number
number = (number + 1) * 2
return peach_count(taday - 1, number)
print(peach_count(10, 1)) #1534