基本概念:
如果一个函数在内部调用自身本身,这个函数就是递归函数
使用递归函数的优点是逻辑简单清晰,缺点是递归过深会导致栈溢出。
【注意】 递归函数定义时, 一定存在某个条件能结束执行, 递归最重要的就是需要避免死循环的出现和逻辑关系的正确性
经典案例
1、 计算阶乘n! = 1 x 2 x 3 x … x n
fun(n) = n! = 1 x 2 x 3 x ... x n
fun(1) = 1
fun(2)= 1*2 = fun(1)*2
.
.
.
fun(n)=fun(n-1)* n
则可以推导出fun(n) 推导如下结论:
def func(n):
if n ==1:
return 1
else:
return fun(n-1) *n
执行过程
2、 递归模拟实现字符串的逆置
此方法不唯一,主要以个人思路
def reverse_str(str1: str):
if len(str1) <= 1:
return str1
else:
return str1[-1] + reverse_str(str1[:-1])
v = "v01234567890"
aa = reverse_str(v)
print(aa)
3、斐波那契数列的递归
何谓 斐波那契数列?? — 可自行百度
def fibonacci_sequence(n):
"""均建立在是正正数前提>1="""
if n <= 2:
return 1
else:
return fibonacci_sequence(n - 2) + fibonacci_sequence(n - 1)
fs3 = fibonacci_sequence(3)
fs7 = fibonacci_sequence(7)
fs10 = fibonacci_sequence(10)
print(fs3)
print(fs7)
print(fs10)