C 递归程序无法通过 GCC 编译

标签 c

#include <stdio.h>

int main (void)

{
int n, x;

int factorial (int n)
{
if (x<=0)
{
 printf("x equals: ");
return 1;
}
else
{
return n * factorial (n-1); 
}
f(x)=f(x-1)+2; //says error is here
}
return 0;
}

我已经尝试了一些东西,但无法让它工作。我可能只是太累了,忽略了最小的事情,但我将不胜感激!谢谢:)

最佳答案

您不能在 main() 或任何其他函数内声明函数定义...函数定义必须是独立的,并且不能在其中嵌入函数定义。

此外,我不确定您在标记为错误的行上做了什么,因为 f() 不是已定义的函数,因此您无法调用它。此外,它需要返回某种类型的左值,例如指向函数内声明的静态变量的指针,或者通过引用传递给函数的指针,即使这样语法也不正确,因为需要取消引用......所以基本上你不能做你在那条线上正在做的事情。

要得到可以编译的东西,试试

#include <stdio.h>

int factorial (int n)
{
    if (n <= 0)
    {
        return 1;
    }
    else
    {
        return n * factorial (n-1); 
    }
}

int main (void)
{
    int x;

    x = factorial(5);
    printf("Factorial of 5 is equal to %d", x);

    return 0;
}

关于C 递归程序无法通过 GCC 编译,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5900412/

相关文章:

c++ - 从 C 或 C++ 连接到 MySQL

c - 替换 __aeabi_dsub 以节省空间(-flto 问题)

c - 获取 long double 的数字

c++ - C/C++中的NaN比较规则

c - 为什么这两个指令的大小不同?

c - 在c中遍历P*Q网格中的一些单元格

c - 在小端机器上,位运算符如何工作?

c - 如何从 execl 命令中捕获输出

c - 使用递归算法反转链表

c - 逻辑 NOT (!) 运算符不适用于按位语句