【问题标题】:Why is the function to find factorial wrong?为什么查找阶乘的功能错误?
【发布时间】:2019-12-12 13:02:30
【问题描述】:

我的计算 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");
    }
}

我也试过了

p = p*i; //instead of p *=i;

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

【问题讨论】:

  • 不是返回一个数字,而是打印一个数字而不返回任何内容。
  • = 是分配。 == 是比较。
  • 您预计会发生什么?真的会发生什么?只是说有一些“错误”并不能告诉我们太多。请花一些时间阅读有关how to ask good questionsthis question checklist 的信息。另外请尝试创建一个minimal reproducible example 向我们展示,并说明您遇到的问题。
  • 近距离投票者:这怎么跑题了? === 的使用和区别对于 [c] 来说非常重要

标签: c math combinations


【解决方案1】:

在第 5 行,您将请求的 n 值覆盖为 0。

然后计算为零(假),接下来的两个条件也被渲染为假,所以什么都不会打印。

请改用if (n==0)

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

【讨论】:

    猜你喜欢
    • 2023-01-26
    • 2015-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多