小明收到了一个俄罗斯套娃作为生日礼物。他兴奋地打开最外面的大娃娃,发现里面有一个稍小一点的娃娃,形状完全一样。
再打开,里面又有一个更小的……一层一层打开,直到最里面是一个实心的小娃娃,再也打不开了。
"每个娃娃里面都藏着一个更小的自己" —— 这就是递归!
递归的核心思想:把一个大问题分解为结构相同但规模更小的子问题,直到子问题简单到可以直接解决(base case),然后逐层返回,组合出大问题的答案。
就像打开套娃一样:打开 → 里面还是套娃 → 继续打开 → ... → 最小的实心娃娃(终止条件)→ 合上 → 合上 → ... → 完整套娃
💡 递归的两个关键
① 自我调用:函数调用自身来解决规模更小的子问题
② 终止条件(Base Case):当问题足够小时直接返回答案,不再递归
没有终止条件的递归 = 死循环 → 栈溢出(Stack Overflow)💥