C语言递归factoriel不工作

C语言递归factoriel不工作,c,function,recursion,C,Function,Recursion,对于下面的代码,我没有得到任何回应,我把它保持在最小值,没有任何条件,想象人们会选择正数。除了返回的进程-1073741571(0xC00000FD)执行时间:3.194秒之外,它没有给我任何响应。如果我输入5,答案应该是120,而不是这里 #include <stdio.h> #include <stdlib.h> int faktorijel(int x){ return (x*faktorijel(x-1)); } main (){ int

对于下面的代码,我没有得到任何回应,我把它保持在最小值,没有任何条件,想象人们会选择正数。除了返回的进程-1073741571(0xC00000FD)执行时间:3.194秒之外,它没有给我任何响应。如果我输入5,答案应该是120,而不是这里

#include <stdio.h>
#include <stdlib.h>

int faktorijel(int x){

        return (x*faktorijel(x-1));

}
main (){

int a,b ;
printf("Type in a number:");
scanf("%d\n", &a);
b=faktorijel(a);
printf("Result is %d\n", b);
return 0;

}
#包括
#包括
内部faktorijel(内部x){
返回(x*faktorijel(x-1));
}
主要(){
INTA,b;
printf(“输入一个数字:”);
scanf(“%d\n”、&a);
b=faktorijel(a);
printf(“结果是%d\n”,b);
返回0;
}

如果出现以下情况,则应设置停止

intfaktorijel(intx){
如果(x==1){
返回1;
}否则{
返回(x*faktorijel(x-1));
}
}

无限递归。仔细看看为什么会发生这种情况。@njuffa我从学习c开始就没睡过觉,所以我几乎看不到屏幕,但我唯一的猜测是没有向下的基数。如果你的循环没有终止条件,它将永远循环。同样的原理也适用于递归。您必须有一个停止条件。@tadman tnx二者,刚刚添加了for,它自己修复了。OT:缩进您的代码。我刚刚添加了for循环,它工作了。Tnx也是如此!这里有一件事让我很困惑。我读到函数只返回一件事。这个不是返回1而不是我需要的阶乘数吗?因为最终x将变成==1这里的基本情况是不标准的。它应该测试
x==0
,以便能够处理
0
1
。如果它不处理这种情况,那是毫无用处的,因为它总是出现。这是真的!要控制这种情况,情况必须改变。你也不需要其他人(你无论如何都要回来)