Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C语言中的递归阶乘程序混淆_C - Fatal编程技术网

C语言中的递归阶乘程序混淆

C语言中的递归阶乘程序混淆,c,C,请解释一下这个程序是如何工作的。我在阶乘函数中的if语句后应用了for循环,但这是如何工作的 int factorial(int n); int main() { int n; printf("Enter an positive integer: "); scanf("%d",&n); printf("Factorial of %d = %ld", n, factorial(n)); return 0; } int factor

请解释一下这个程序是如何工作的。我在阶乘函数中的if语句后应用了for循环,但这是如何工作的

int factorial(int n); 
int main() 
{ 
    int n;  
    printf("Enter an positive integer: "); 
    scanf("%d",&n); 
    printf("Factorial of %d = %ld", n, factorial(n)); 
    return 0; 
} 
int factorial(int n) 
{ 
   if(n!=1) 
        return n*factorial(n-1); 
} 
}


这是正确的:我认为您的代码不应该编译,因为函数factorialint n没有定义的返回语句

快速建议:请使用问题编辑器工具栏中的{}设置代码格式。谢谢当n==1时,阶乘返回什么?这是未定义的行为。基本情况没有返回。关键问题是没有启用所有警告或使用低于标准的编译器。由于int factorial有一个不返回值的路径,一个好的编译器会警告您这会节省时间。它还将警告%d=%ld,n,factorialn;的main,printfactorial;。通常在递归中不会遇到循环。只有基条件和递归调用。@必须
int factorial(int n){
    if(n==1)
       return 1;
    return n*(factorial(n-1));