有人可以向我解释为什么我的阶乘递归代码无法编译的原因

问题描述 投票:0回答:1

我制作了一个简单的程序来计算数字的阶乘。下面是代码。

#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 recursion factorial
1个回答
0
投票

只是因为您不能为C中的函数调用赋值。factorial(i)调用该函数(顺便说一句,将导致无限递归),而您试图为此赋值,这是不可能的。

© www.soinside.com 2019 - 2024. All rights reserved.