递归要刹车

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; 会怎样?

登录 后可看答案

递归要刹车 · C++ 入门 · op599 课程