鱼C论坛

 找回密码
 立即注册
查看: 3598|回复: 20

[已解决]求阶乘,,,即使是输入1结果也是错的

[复制链接]
发表于 2019-12-14 18:22:19 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#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;
        }
}
最佳答案
2019-12-14 18:24:51
用这段代码没错:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int n;
  5.         int result;
  6.         scanf_s("%d", &n);
  7.         result = hanshu(n);
  8.         printf("%d", result);
  9.         return 0;
  10. }
  11. int hanshu(int n)
  12. {
  13.         int linshijieguo;
  14.         if (n == 0 || n == 1)
  15.         {
  16.                 linshijieguo = 1;
  17.         }
  18.         else if (n < 0)
  19.         {                printf("n<0,input error!\n");
  20. }
  21.         else
  22.         {
  23.                 linshijieguo = hanshu(n - 1)*n;
  24.         }
  25. }
复制代码


1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2019-12-14 18:24:51 | 显示全部楼层    本楼为最佳答案   
用这段代码没错:

  1. #include<stdio.h>
  2. int main()
  3. {
  4.         int n;
  5.         int result;
  6.         scanf_s("%d", &n);
  7.         result = hanshu(n);
  8.         printf("%d", result);
  9.         return 0;
  10. }
  11. int hanshu(int n)
  12. {
  13.         int linshijieguo;
  14.         if (n == 0 || n == 1)
  15.         {
  16.                 linshijieguo = 1;
  17.         }
  18.         else if (n < 0)
  19.         {                printf("n<0,input error!\n");
  20. }
  21.         else
  22.         {
  23.                 linshijieguo = hanshu(n - 1)*n;
  24.         }
  25. }
复制代码


1.png
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 18:29:16 | 显示全部楼层
zltzlt 发表于 2019-12-14 18:24
用这段代码没错:

可是我在vs2013上输入1结果为一串负数,得不到正确答案
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-14 18:30:06 | 显示全部楼层
WFR 发表于 2019-12-14 18:29
可是我在vs2013上输入1结果为一串负数,得不到正确答案

可能是编译器问题,我用的是 Dev-C++。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 18:34:03 | 显示全部楼层
WFR 发表于 2019-12-14 18:29
可是我在vs2013上输入1结果为一串负数,得不到正确答案

大哥????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 18:34:46 | 显示全部楼层
zltzlt 发表于 2019-12-14 18:30
可能是编译器问题,我用的是 Dev-C++。

怎么解决???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 18:35:29 | 显示全部楼层
WFR 发表于 2019-12-14 18:34
怎么解决???

我不会搞这个,怎么才能得到正确的结果??
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-14 18:36:22 | 显示全部楼层
WFR 发表于 2019-12-14 18:35
我不会搞这个,怎么才能得到正确的结果??

下一个 Dev-C++ 看看。

下载地址:https://www.cr173.com/soft/21025.html
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 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都不兼容???你确定这个可以兼容》????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-14 18:40:06 | 显示全部楼层
WFR 发表于 2019-12-14 18:38
大哥windows 10连vc++6.0都不兼容???你确定这个可以兼容》????

可以兼容。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 18:41:51 | 显示全部楼层

但是我这个vs2013怎么办才能得到正确结果???
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-14 18:46:23 | 显示全部楼层
  1. #include<stdio.h>

  2. int hanshu(int n)
  3. {
  4.         if (n == 0 || n == 1)
  5.         {
  6.             return 1;
  7.         }
  8.         else if (n < 0)
  9.         {
  10.             printf("n<0,input error!\n");
  11.             return n;
  12.         }
  13.         else
  14.         {
  15.             return hanshu(n - 1)*n;
  16.         }
  17. }

  18. int main()
  19. {
  20.     int n;
  21.     int result;
  22.     scanf_s("%d", &n);
  23.     result = hanshu(n);
  24.     printf("%d", result);
  25. }
复制代码

为啥你的函数返回值都没有,上面代码vs2017编译通过。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-14 19:06:15 | 显示全部楼层
Charles未晞 发表于 2019-12-14 18:46
为啥你的函数返回值都没有,上面代码vs2017编译通过。

谢谢大哥

终于解决了
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-14 19:57:43 | 显示全部楼层
WFR 发表于 2019-12-14 19:06
谢谢大哥

终于解决了

OK,可以的话麻烦采纳一下设置为最佳。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-15 20:30:04 | 显示全部楼层
Charles未晞 发表于 2019-12-14 19:57
OK,可以的话麻烦采纳一下设置为最佳。

可是为什么输入20,得到的却是一个负数??????疑问?????????????????????
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-12-15 20:40:41 | 显示全部楼层
WFR 发表于 2019-12-15 20:30
可是为什么输入20,得到的却是一个负数??????疑问?????????????????????

这种东西自己搜一下int范围就行了,越界了。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-21 18:15:57 | 显示全部楼层
Charles未晞 发表于 2019-12-15 20:40
这种东西自己搜一下int范围就行了,越界了。

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


小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2019-12-21 18:16:38 | 显示全部楼层
Charles未晞 发表于 2019-12-15 20:40
这种东西自己搜一下int范围就行了,越界了。

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



小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-11 22:41:48 | 显示全部楼层
WFR 发表于 2019-12-21 18:16
怎么解决这个问题????、、

用long long 如果还不够就用unsigned long long
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-1-12 20:54:19 | 显示全部楼层
WFR 发表于 2019-12-14 18:38
大哥windows 10连vc++6.0都不兼容???你确定这个可以兼容》????

不会吧,我的win10运行vc6.0没问题啊
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-5 21:30

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表