什么是递归 递归就是某个函数直接或者间接调用自己的过程。函数调用的原则所有被调用的函数都会创建一个副本各自为调用者服务而不受其他函数的影响。1、递归的条件分为两种边界条件是递归终止条件防止出现死循环。也叫递归出口递归条件是递归。将大问题分解成一步步小问题。是递归的调用阶段eg:斐波那契fib(n)fib(n-1)fib(n-2);2、尾递归若函数在尾位置调用自身或是⼀个尾调⽤本身的其他函数等函数最后一步操作只是调用另一个函数没有额外运算、加减乘、拼接等操作这种调用叫尾调用。这是递归的一种特殊情况。尾调用不⼀定是递归调用但是尾递归特别有用也比较容易实现。编译器 /解释器识别出是尾递归后不会新建栈帧直接复用当前函数栈帧覆盖原有参数。栈永远只有 1 层递归再深也不会栈溢出。尾调用这种特殊情形中电脑理论上可以不需要记住尾调用的位置而从被调用的函数直接带着返回值返回调用函数的返回位置相当于直接连续返回两次# 尾递归版阶乘 deffact_tail(n,acc1):ifn0:returnacc # 最后一步只有递归调用没有后续运算returnfact_tail(n-1,n*acc)执行fact_tail(4)fact_tail(4,1) → fact_tail(3,4*14)fact_tail(3,4) → fact_tail(2,3*412)fact_tail(2,12) → fact_tail(1,2*1224)fact_tail(1,24) → fact_tail(0,1*2424)