我制作了一个简单的程序来计算数字的阶乘。下面是代码。
#include <stdio.h>
int factorial(int i);
int main(void)
{
int i;
printf("Factorial of: ");
scanf("%i", &i);
printf("Answer: %i\n", factorial(i));
}
int factorial(int i)
{
if (i == 0)
{
return 1;
}
factorial(i) = (factorial(i - 1) * i);
return factorial(i);
}
编译器告诉我以下行有问题
factorial(i) = (factorial(i - 1) * i);
所以我将上面的行更改为下面的行,并且起作用了
int a = (factorial(i - 1) * i);
return a;
所以,有人可以向我解释为什么初始行(factorial(i)=(factorial(i-1)* i);)无效吗?
只是因为您不能为C中的函数调用赋值。factorial(i)
调用该函数(顺便说一句,将导致无限递归),而您试图为此赋值,这是不可能的。