递归函数这里就开始套娃了,跟递归比起来前面什么循环嵌套都是小套娃了,下面先将一些定义。
定义
递归函数就是在函数定义的函数体内调用了这个函数本体,那么这个函数就是一个递归函数。
递归函数必要的组成部分是递归的调用和递归的终止条件,不然的话函数已调用就无尽循环了。
过程
每递归调用一次,都会在栈内分配一个栈帧
每执行完一次函数,都会释放相应的空间
优缺点
缺点:占用内存多,效率低
优点:思路和代码简单,方便理解
举个栗子:
# 项目名:pythonProject2
# NAME:demo16
# 开发时间:2021/4/15 23:57
#递归计算阶乘
def jiecheng(n) :
if n == 1 :
return 1
else:
res = n*jiecheng(n-1)
return res
return
s = jiecheng(6)
print(s)
通过编译过程可以发现,递归就是有两个过程,分别是递和归。
递就是向下传递,反复调用函数本身的过程;归就是在碰到了结束递归的条件,在这个例子中就是当n= 1时,一层一层返回上级,将每一次调用函数return的值都再套到上一次调用的函数中,最终到第一次调用的函数的时候,就得出了最后的值。具体分析一下就是:
递:
jiecheng(6)
6jiecheng(5))
65jiecheng(4)
654jiecheng(3)
6543jiecheng(2)
65432*jiecheng(1)
归:
当n=1,jiecehng(1)返回的值为1,层层向上return,得出结果。