🪞
递归初探
函数调用自己
📖知识引入
🪞递归调用
函数在内部调用自己,将大问题分解为小问题,像照镜子
⏹️基准条件
递归必须有停止条件,否则会无限递归导致栈溢出
📐经典应用
阶乘、斐波那契数列是递归的经典应用
📚调用栈
每次递归调用都会在栈上保存信息,递归太深会栈溢出
🔄递推关系
递归用递推公式把问题分解,如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课完成!继续探索下一课吧 🚀