我想打印no的阶乘.使用递归,但在C中不起作用


#include <stdio.h>
int factorial(int b)
{
return (b * factorial(b - 1));
}
int main()
{
int num;
printf("Enter a no:n");
scanf("%d", &num);
printf("factorial is %dn", factorial(num));
return 0;
}

您缺少一个基本案例。此外,您不希望输入负数,因此请将函数参数和返回类型设置为unsigned int

基本情况是结束递归的条件。由于它不存在,即使b为负值,程序也在执行。

#include <stdio.h>
unsigned int factorial(unsigned int b)
{
if (b <= 1)
{
return b;
}
return (b * factorial(b - 1));
}
int main()
{
int num;
printf("Enter a no:n");
scanf("%d", &num);
printf("factorial is %un", factorial(num));
return 0;
}

最新更新