C语言递归思想与实战
📚 共计 30 章节
01
递归初探
什么是递归?三大要素:基线条件、递归前进、递归返回。用阶乘例子第一次写出递归函数。
入门
阶乘
02
递归的调用栈
函数调用栈帧变化,递归时压栈和弹栈,用画图理解“递”与“归”。
栈
内存
03
递归 vs 迭代
递归与循环对比,何时用递归?何时用循环?性能与可读性权衡。
对比
性能
04
斐波那契数列
经典递归案例,分析指数级时间复杂度,引出重复计算问题。
递归
O(2ⁿ)
05
递归优化之记忆化
数组/哈希表缓存中间结果,斐波那契从O(2ⁿ)优化到O(n)。
记忆化
DP
06
递归优化之尾递归
什么是尾递归?编译器优化,用阶乘和斐波那契演示尾递归写法。
尾递归
优化
07
汉诺塔问题
经典递归,分治思想,递归三步法解决汉诺塔。
分治
经典
08
递归与分治:归并排序
归并排序递归实现,分解-解决-合并三步走。
排序
分治
09
递归与分治:快速排序
选基准、分区、递归排序,快速排序递归实现。
快排
递归
10
递归与回溯:八皇后
递归回溯搜索所有解,经典八皇后问题。
回溯
经典
11
递归与回溯:全排列
递归生成所有排列,理解回溯的“撤销”操作。
排列
回溯
12
递归与回溯:子集生成
递归生成一个集合的所有子集(幂集)。
子集
幂集
13
递归与树:二叉树遍历
前序、中序、后序遍历的递归实现。
二叉树
遍历
14
递归与树:深度/节点统计
二叉树深度、节点个数、叶子节点个数递归求解。
树
递归
15
递归与树:BST操作
二叉搜索树的查找、插入、删除递归实现。
BST
递归
16
递归与图:DFS
深度优先搜索(DFS)的递归实现。
图
DFS
17
递归与图:拓扑排序
基于DFS的拓扑排序递归实现。
拓扑
DFS
18
递归与动态规划:爬楼梯
从递归到DP的转化,以爬楼梯问题为例。
DP
转化
19
递归与动态规划:背包问题
背包问题的递归解法与DP优化。
背包
DP
20
递归与字符串:反转
字符串反转的递归实现。
字符串
递归
21
递归与字符串:回文判断
判断回文字符串的递归实现。
回文
递归
22
递归与字符串:全排列去重
字符串全排列(去重版本)。
去重
排列
23
递归与数学:最大公约数
辗转相除法(GCD)递归实现。
数学
GCD
24
递归与数学:快速幂
快速幂算法的递归实现。
快速幂
分治
25
递归与数学:杨辉三角
杨辉三角的递归生成。
杨辉三角
递归
26
递归的陷阱:栈溢出
栈溢出问题,递归深度过大怎么办?如何估算最大递归深度?
陷阱
栈溢出
27
递归的陷阱:无限递归
无限递归与段错误,如何避免?调试技巧。
段错误
调试
28
递归实战:文件目录树
模拟文件目录树的递归遍历。
实战
目录
29
递归实战:JSON/XML解析
递归下降解析思想,模拟JSON/XML解析器。
解析器
实战
30
递归总结
递归思维模型总结,适用场景、优缺点、优化手段一览。
总结
思维模型