递归要刹车
约 8 分钟
俄罗斯套娃一层套一层,但最里面一定有个打不开的最小娃娃,那就是「底」。递归函数也一样,必须有个「停止条件」(也叫出口),到了它就不再往下叫自己,否则会一直套下去,把内存撑爆(这叫「栈溢出」)。算阶乘时,乘到 1 就该刹车。
#include <iostream>
using namespace std;
int fac(int n){
if(n==1) return 1; // 刹车:到 1 就停
return n * fac(n-1);
}
int main(){
cout << fac(5); // 输出 120
return 0;
}
易错点:千万别漏掉 if(n==1) return 1; 这句刹车。少了它,函数会没完没了地叫自己,程序直接崩溃。
小纸条
阶乘函数如果去掉 if(n==1) return 1; 会怎样?
登录 后可看答案