#include<stdio.h>
int fact(int n);
int main()
{
int n,f;
scanf("%d",&n);
f=fact(n);
printf("factorial of %d is %d",n,f);
return 0;
}
int fact(int n)
{
if(n==1)
{
return 1;
}
else
{
return n*fact(n-1);
}
}
我试图使用C和递归函数在factorial上创建一个基本程序,但由于某种原因,它不会运行。在编译时,我遇到了分段错误(SIGSEGV)。
答案 0 :(得分:0)
我没有尝试,但它似乎没有包含错误。检查你的号码将被计算为factorial。你输入负数还是太大数?如果输入负数,递归函数将不会退出。
答案 1 :(得分:0)
我在网上https://www.onlinegdb.com/复制了你的程序 并运行它没有问题。我给出了小的输入数字,如5和12,它计算了阶乘。因此编译没有任何问题,然后进入执行阶段。我还将-Wall作为命令行参数,然后再编译并运行。对您的程序的唯一改进可能是输出一行指令, “输入一个整数&gt; 1:” 当你用户阅读输入时,首先检查它是否> 1然后调用该函数,否则终止执行而不调用该函数。