希望各位能帮我做一个注释方便理解

#include<stdio.h>

int fac(int x)
{
    if(x==1)
    return 1;
    else
    return x*fac(x-1);
}
int main()
{
    int n=6;
    printf("%d",fac(n));
    
    return 0;
}

下面是我的理解,供参考:


#include<stdio.h>
 
int fac(int x)  //求x的阶乘 
{
    if(x==1)  //如果x等于1返回1,此是递归函数的退出条件
    return 1;
    else  //如果x大于1,则返回当前x的值乘以(n-1)的阶乘,当达到x=1,即完成x乘以到1的一系列数,完成阶乘的运算 
    return x*fac(x-1);
}
int main()
{
    int n=6;  //求6的阶乘 
    printf("%d",fac(n));  //打印6阶乘的结果。 
    
    return 0;  //main函数返回退出 
}
 

“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出