每个递归函数都有两部分(基线条件和递归条件)
1.基线条件:指的是函数不再调用自己,从而避免形成无限循环
2.递归条件:指的是函数调用自己
"""
基线条件:函数不再调用自己
递归条件:函数调用自己
"""
# 案例一:阶乘
# def fact(x):
# if x == 1:
# return 1
# else:
# return x * fact(x - 1)
#
#
# print(fact(5))
# 案例二:斐波拉契数列
# 列表实现
lis = []
for i in range(20):
if i == 0 or i == 1: # 第1,2项 都为1
lis.append(1)
else:
lis.append(lis[i - 2] + lis[i - 1]) # 从第3项开始每项值为前两项值之和
print(lis)
# 打印第n项,递归方法:
def func(n):
# 给递归一个出口 第一位和第二位都是1
if n == 1 or n == 2:
return 1
else:
# 从第三位开始 返回上一个数加上上一个数
return func(n - 1) + func(n - 2)
print(func(5))