-5

这是我的递归尝试。它编译并运行,但不显示我输入的数字的阶乘。我在 Ubuntu 上用 Geany 尝试这个。

#include <stdio.h>

int fact(int n);
int main() {
    int n;
    printf("Give me a number");
    scanf("%6d", &n);
    fact(n);
}   

int fact(int n) {
    if (n <= 1)
        return 1;
    else
        return n * fact(n - 1);
}
4

3 回答 3

1

不显示我输入的数字的阶乘。

int main()
{
    int n;
    printf("Give me a number");
    scanf("%6d", &n);
    fact(n);
} 

你不打印阶乘的结果,那么它不是打印

为什么在scanf中使用“%6d”而不是“%d” ?你不打印所以你不需要那个

我也鼓励你

  • 在给我一个数字之后添加一个分隔符,否则输入的数字似乎会附加在它上面(我在下面使用了一个“:”)
  • 测试scanf的结果

因此,例如:

int main()
{
    int n;

    printf("Give me a number:");
    if (scanf("%d", &n) == 1)
      printf("fact(%d)=%d\n", n, fact(n));
}
于 2019-03-10T20:54:33.490 回答
1

您缺少打印语句。您可以将结果保存在变量中,然后打印出来。

printf("%d",fact(n));

于 2019-03-10T21:07:54.687 回答
1

您的代码很好,但是您忘记打印函数fact()的返回值更改这部分代码

    scanf("%6d", &n);
    fact(n);

对此:

    scanf("%6d", &n);
    printf("%d", fact(n));

你的工作会完成的。替换您的 main() 函数后将如下所示:

int main()
{
    int n;
    printf("Give me a number");
    scanf("%6d", &n);
    printf("%d", fact(n));
}

注意: 17 或更高的阶乘不调整整数限制。

于 2019-03-10T21:12:17.473 回答