为什么查找阶乘的函数是错误的?

-2 c math combinations

我计算 n 阶乘的函数不起作用。没有打印语句被执行,即使它们测试了所有可能的 n 值。

我究竟做错了什么?

long int factorial(int n) //function to find factorial
{
    int i=1;
    long int p=1;
    if(n=0)
    {
        printf("1");
    }
    if(n>0)
    {
      for(i=1;i<=n;i++)
       {
        p *=i;
       }
       printf("%ld",p);
    }
    if(n<0)
    {
        printf("Error");
    }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试做

p = p*i; //instead of p *=i;
Run Code Online (Sandbox Code Playgroud)

这似乎也不起作用。我无法指出我的错误在哪里。

L. *_*son 5

在第 5 行中,您用 0 覆盖了请求的 n 值。

然后计算为零(假),接下来的两个条件也被渲染为假,所以没有打印。

使用if (n==0)来代替。

作为附加说明:您的函数被声明为返回一个 long int,但您实际上并未明确返回任何内容。