C编程:递归

Jen*_*fer 0 c recursion gcc lvalue

所以我编写了这个简单的递归程序,并在使用GCC编译时遇到错误

错误:左值作为赋值的左操作数需要左值

希望这不是什么严肃的事情,任何见解都是值得赞赏的

谢谢!

#include <stdio.h>
int factorial (int);

int main (void)


{

        int i = 0;
        int a = 0;

        printf("Please enter an integer: ");
        scanf("%d", &i);

        a = factorial (i);

        printf("\n\n%d factorial equals: %d \n", i, a);

        return 0;
}

int   factorial ( int  n )
        {
        if ( n  <= 0 )
                return 0 ;
        else
                f(n) = f( n-1) + 2;              
        }
Run Code Online (Sandbox Code Playgroud)

Gre*_*ill 6

以下语句无效C:

            f(n) = f( n-1) + 2;              
Run Code Online (Sandbox Code Playgroud)

(我假设这是你得到错误的那一行;你没有说.)

您可能想尝试以下操作:

            return factorial(n-1) + 2;
Run Code Online (Sandbox Code Playgroud)

但这个名称factorial具有误导性,因为这不是阶乘函数的正确公式.