读程序练习三
约 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 的阶乘,一共调用几次函数?
登录 后可看答案