递归算法核心是函数调用自身求解更小规模同类子问题,需有明确边界条件防止无限递归,问题可拆解为结构相同但规模递减的子问题,每次调用须趋近边界,执行过程遵循栈式调用与返回顺序。

递归算法的核心原理是“用自身定义自身”,即一个函数在求解问题时,调用自己来处理更小规模的同类子问题,直到问题缩小到可以直接解决的程度。
必须有明确的边界条件(基例)
没有出口的递归会无限调用,最终导致栈溢出。边界条件就是递归停止的信号,它对应问题最简单、无需再分解的情形。比如计算阶乘时,0! = 1 或 1! = 1 就是基例;斐波那契数列中,F(0) = 0、F(1) = 1 也是基例。
问题必须能拆解为同类子问题
原问题和子问题结构一致,只是规模变小。例如:求 n 的阶乘,可转化为 n × (n−1)!;求第 n 项斐波那契数,可转化为 F(n−1) + F(n−2)。这种“大问题 → 小问题 → 更小问题”的链条,构成了递归的逻辑骨架。
每次调用都在向边界靠近
递归不是随意调用自己,而是每次调用时,输入参数必须朝基例方向变化。比如 sum(n) 调用 sum(n−1),n 每次减 1,终将触达 n ≤ 1 的边界;若写成 sum(n+1),就永远无法终止。
调用过程隐含执行顺序与栈结构
函数调用层层压栈:先执行上层逻辑(如打印、计算前半部分),再进入下一层;返回时逐层弹栈:最深层最先返回,上层等待下层结果后继续执行后续语句(如加法、拼接等)。这意味着递归中“调用前代码”自顶向下执行,“调用后代码”自底向上执行。

















