在正常写代码时,用int定义函数的话,当输入13往后的数字时,会出现栈溢出的问题。
所以: 用 long long 代替 int,与此同时将 %d 换成相对应的 %lld 。
#include <stdio.h>
long long Fac1(int n)
{
int i = 1;
int num = 1;
for (i = 1;i <= n; i++)
{
num = num * i;
}
return num;
}
//递归
long long Fac(int n)
{
if (n == 1)
{
return 1;
}
else
{
return n * Fac(n-1);
}
}
int main()
{
int n = 0;
printf("请输入:");
scanf("%d", &n);
printf("%lld\n", Fac(n));
return 0;
}
如果有哪里不正确,还请大家多多指出。
如果这些简单的理解有帮到大家的话,希望大家支持关注一下哦 !