C语言中的递归阶乘程序混淆
请解释一下这个程序是如何工作的。我在阶乘函数中的if语句后应用了for循环,但这是如何工作的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
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));