You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求提供Recursion(递归)的最简定义及通俗解释

递归(Recursion)的最简定义

递归是一个过程(或函数)调用自身,同时逐步缩小问题的规模,直到触发某个无需再递归的终止条件。

用生活化场景理解递归

举个最常见的例子:找家门钥匙。

  • 你要找钥匙,但记得钥匙在背包里 → 现在问题变成「找背包」
  • 背包在卧室衣柜里 → 问题变成「找衣柜」
  • 衣柜上层被储物箱挡住了 → 问题变成「找储物箱」
  • 储物箱在床底下 → 这时候你直接能拿到储物箱,不用再找别的东西来获取它(这就是终止条件)
  • 拿到储物箱后,你就能打开衣柜、取出背包、找到钥匙——这就是递归的「回溯计算」过程:从最底层的结果一步步往上推,解决最初的大问题。

简单说,递归就是「把大问题拆成和原问题逻辑一样但更小的问题,直到遇到一个不用再拆的“终点”,再从终点往回得出最终答案」。

用简单代码示例看递归

以计算正整数的阶乘为例(n的阶乘是1×2×…×n),用Python写的递归函数如下:

def factorial(n):
    # 终止条件:当n=1时,阶乘结果就是1,不用再递归
    if n == 1:
        return 1
    # 递归调用:把计算n的阶拆成n乘以(n-1)的阶乘,问题规模缩小了1
    return n * factorial(n-1)

比如计算factorial(5):

  1. 先调用factorial(5),需要计算5 * factorial(4)
  2. 调用factorial(4),需要计算4 * factorial(3)
  3. 调用factorial(3),需要计算3 * factorial(2)
  4. 调用factorial(2),需要计算2 * factorial(1)
  5. 触发终止条件,factorial(1)返回1
  6. 回溯计算:2*1=2 → 3*2=6 → 4*6=24 → 5*24=120,最终得到结果120

递归的核心要点

  • 必须有终止条件:如果没有终止条件,递归会无限调用自身,导致程序崩溃(就像镜子对着镜子,无限反射下去)
  • 问题规模必须逐步缩小:每次递归调用都要把问题变简单,这样才能最终触发终止条件
  • 回溯计算:递归不是只拆问题,还要从终止条件的结果往回推导,得到原问题的答案

内容的提问来源于stack exchange,提问作者Lukar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.15 11:50:24