【发布时间】:2020-06-11 10:09:23
【问题描述】:
我做了一个简单的程序来计算一个数的阶乘。下面是代码。
#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);) 的初始行不起作用吗?
【问题讨论】:
-
在您看来,这条线是什么意思?
-
你不能给函数的返回值赋值。那没有意义。将最后两行替换为
return factorial(i - 1) * i;。 -
factorial(i)返回一个整数。factorial(i) = thing;会调用factorial(i),获取返回值,然后立即用thing覆盖它。没有太大意义 -
我已经阅读了大家的回复,非常感谢您的帮助。基本上,我所做的没有意义。我正在调用一个返回值的函数并将其分配给返回值的同一函数。这是一团糟。
-
".. 编译器告诉我以下行有问题。" [需要引用] 包括它报告的确切文本。