【发布时间】:2018-10-28 00:32:25
【问题描述】:
#include <stdio.h>
int checkiffactorial();
int factorial(int n);
int number;
int main()
{
int answer, n, i;
printf("Enter a number: ");
scanf("%d", &number);
answer = checkiffactorial();
if (answer == 1)
{
printf("It's a factorial");
}
else
{
printf("It's not a factorial");
}
}
int checkiffactorial()
{
static int whichnumber = 1;
int currnumber;
if (whichnumber > number)
{
return 0;
}
if(whichnumber <= number)
{
currnumber = factorial(whichnumber);
if (currnumber == factorial(number))
{
return 1;
}
whichnumber++;
checkiffactorial();
}
}
int factorial(int n)
{
int i;
int fac;
for(i=1; i<=n; ++i)
{
fac = fac * i;
}
}
为什么这段代码不起作用? 我的 C 代码旨在让您输入一个数字并检查该数字是否可以是阶乘。
例如:如果您输入 6,它应该是 Yes,因为 3! = 6 但如果输入 8 则不起作用。
我不认为这是重复的,因为我做的方法不同。
请注意,我不太擅长 C,所以如果有任何额外的提示,我们将不胜感激。
【问题讨论】:
-
启用编译器警告...“
fac = fac * i;”您正在使用未初始化的变量fac。 -
@bo wei 你为什么不使用函数参数?