29课:递归初探
🪞

递归初探

函数调用自己

📖知识引入

🪞递归调用
函数在内部调用自己,将大问题分解为小问题,像照镜子
⏹️基准条件
递归必须有停止条件,否则会无限递归导致栈溢出
📐经典应用
阶乘、斐波那契数列是递归的经典应用
📚调用栈
每次递归调用都会在栈上保存信息,递归太深会栈溢出
🔄递推关系
递归用递推公式把问题分解,如n!=n*(n-1)!
💡
递归必须有基准条件让它停下来,否则会栈溢出!

🔍递归阶乘示例

📝递归阶乘示例
💻
点击「运行」查看输出
递归计算阶乘的过程:
  factorial(5)
  = 5 * factorial(4)
  = 5 * 4 * factorial(3)
  = 5 * 4 * 3 * factorial(2)
  = 5 * 4 * 3 * 2 * factorial(1)
  = 5 * 4 * 3 * 2 * 1  ← 基准条件
  = 120  ← 逐层返回
┌────────────────┐
  │ if (n<=1)      │ ← 基准条件(停止)
  │   return 1;    │
  │ return n*fact(n-1)│ ← 递归调用
  └────────────────┘

🎯小测验

1题:递归必须有什么?

2题:factorial(5)等于?

3题:递归太深会导致什么?

📝本课知识点

  • 递归调用自己
  • 基准条件停止
  • 阶乘是经典应用
  • 递归太深会栈溢出
  • 用递推公式分解问题
29课完成!继续探索下一课吧 🚀