WFR 发表于 2019-12-14 18:22:19

求阶乘,,,即使是输入1结果也是错的

#include<stdio.h>
long hanshu(int n);
int main()
{
        int n;
        int result;
        scanf_s("%d", &n);
        result = hanshu(n);
        printf("%d", result);
}
int hanshu(int n)
{
        int linshijieguo;
        if (n == 0 || n == 1)
        {
                linshijieguo = 1;
        }
        else if (n < 0)
        {                printf("n<0,input error!\n");
}
        else
        {
                linshijieguo = hanshu(n - 1)*n;
        }
}

zltzlt 发表于 2019-12-14 18:24:51

用这段代码没错:

#include<stdio.h>
int main()
{
      int n;
      int result;
      scanf_s("%d", &n);
      result = hanshu(n);
      printf("%d", result);
      return 0;
}
int hanshu(int n)
{
      int linshijieguo;
      if (n == 0 || n == 1)
      {
                linshijieguo = 1;
      }
      else if (n < 0)
      {                printf("n<0,input error!\n");
}
      else
      {
                linshijieguo = hanshu(n - 1)*n;
      }
}

WFR 发表于 2019-12-14 18:29:16

zltzlt 发表于 2019-12-14 18:24
用这段代码没错:

可是我在vs2013上输入1结果为一串负数,得不到正确答案

zltzlt 发表于 2019-12-14 18:30:06

WFR 发表于 2019-12-14 18:29
可是我在vs2013上输入1结果为一串负数,得不到正确答案

可能是编译器问题,我用的是 Dev-C++。

WFR 发表于 2019-12-14 18:34:03

WFR 发表于 2019-12-14 18:29
可是我在vs2013上输入1结果为一串负数,得不到正确答案

大哥????

WFR 发表于 2019-12-14 18:34:46

zltzlt 发表于 2019-12-14 18:30
可能是编译器问题,我用的是 Dev-C++。

怎么解决???

WFR 发表于 2019-12-14 18:35:29

WFR 发表于 2019-12-14 18:34
怎么解决???

我不会搞这个,怎么才能得到正确的结果??

zltzlt 发表于 2019-12-14 18:36:22

WFR 发表于 2019-12-14 18:35
我不会搞这个,怎么才能得到正确的结果??

下一个 Dev-C++ 看看。

下载地址:https://www.cr173.com/soft/21025.html

WFR 发表于 2019-12-14 18:38:54

zltzlt 发表于 2019-12-14 18:36
下一个 Dev-C++ 看看。

下载地址:https://www.cr173.com/soft/21025.html

大哥windows 10连vc++6.0都不兼容???你确定这个可以兼容》????

zltzlt 发表于 2019-12-14 18:40:06

WFR 发表于 2019-12-14 18:38
大哥windows 10连vc++6.0都不兼容???你确定这个可以兼容》????

可以兼容。

WFR 发表于 2019-12-14 18:41:51

zltzlt 发表于 2019-12-14 18:40
可以兼容。

但是我这个vs2013怎么办才能得到正确结果???

Charles未晞 发表于 2019-12-14 18:46:23

#include<stdio.h>

int hanshu(int n)
{
      if (n == 0 || n == 1)
      {
            return 1;
      }
      else if (n < 0)
      {
            printf("n<0,input error!\n");
            return n;
      }
      else
      {
            return hanshu(n - 1)*n;
      }
}

int main()
{
    int n;
    int result;
    scanf_s("%d", &n);
    result = hanshu(n);
    printf("%d", result);
}
为啥你的函数返回值都没有,上面代码vs2017编译通过。

WFR 发表于 2019-12-14 19:06:15

Charles未晞 发表于 2019-12-14 18:46
为啥你的函数返回值都没有,上面代码vs2017编译通过。

谢谢大哥

终于解决了

Charles未晞 发表于 2019-12-14 19:57:43

WFR 发表于 2019-12-14 19:06
谢谢大哥

终于解决了

OK,可以的话麻烦采纳一下设置为最佳。

WFR 发表于 2019-12-15 20:30:04

Charles未晞 发表于 2019-12-14 19:57
OK,可以的话麻烦采纳一下设置为最佳。

可是为什么输入20,得到的却是一个负数??????疑问?????????????????????

Charles未晞 发表于 2019-12-15 20:40:41

WFR 发表于 2019-12-15 20:30
可是为什么输入20,得到的却是一个负数??????疑问?????????????????????

这种东西自己搜一下int范围就行了,越界了。

WFR 发表于 2019-12-21 18:15:57

Charles未晞 发表于 2019-12-15 20:40
这种东西自己搜一下int范围就行了,越界了。

怎么解决这个问?????


WFR 发表于 2019-12-21 18:16:38

Charles未晞 发表于 2019-12-15 20:40
这种东西自己搜一下int范围就行了,越界了。

怎么解决这个问题????、、



晴初back 发表于 2020-1-11 22:41:48

WFR 发表于 2019-12-21 18:16
怎么解决这个问题????、、

用long long 如果还不够就用unsigned long long

sanguine_boy 发表于 2020-1-12 20:54:19

WFR 发表于 2019-12-14 18:38
大哥windows 10连vc++6.0都不兼容???你确定这个可以兼容》????

不会吧,我的win10运行vc6.0没问题啊
页: [1] 2
查看完整版本: 求阶乘,,,即使是输入1结果也是错的