跳转至

递归

递归

递归是,从原问题出发,逐步缩小问题规模,缩小到已知边界,回溯求解的过程。

我们以 \(1+2+3+..+n\) 的问题为例,逐渐缩小问题规模,缩小到已知边界,回溯求解的过程

int f(int n) {
    if (n == 1) return 1;

    return f(n - 1) + n;
}

我们以f(5)的执行过程为例,进行分析

代码框架

// 问题的边界

// 求解子问题
int f(int n) {
    // 问题的边界
    if (n == 1) return 1;

    // 求解子问题
    return f(n - 1) + n;
}

自己调用自己

从代码角度上看,一个函数,如果自己调用了自己,那就是递归函数。