读程序练习三

10 分钟

递归就是函数自己调用自己,像照镜子里套镜子。读递归代码,最好画一棵"调用树",看清它是怎么一层层展开、再一层层带着结果返回的。

#include <iostream>
using namespace std;

int fac(int n) {
    if (n == 1) return 1;   // 出口,别忘了!
    return n * fac(n - 1);
}

int main() {
    cout << fac(4) << endl; // 24
    return 0;
}

求 4 的阶乘,调用链是 fac(4)→fac(3)→fac(2)→fac(1),一共调用了 4 次函数,然后从 fac(1) 返回 1 开始,一路乘回去得到 24。写递归最致命的错误是忘了写"出口"(这里的 n==1 就返回),少了它函数会一直往下调,直到程序崩溃。

小纸条

求 4 的阶乘,一共调用几次函数?

登录 后可看答案

读程序练习三 · C++ 入门 · op599 课程