鱼C论坛

 找回密码
 立即注册
查看: 2764|回复: 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
用这段代码没错:
#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;
        }
}

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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;
        }
}

1.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可是我在vs2013上输入1结果为一串负数,得不到正确答案
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可能是编译器问题,我用的是 Dev-C++。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

大哥????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

怎么解决???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

我不会搞这个,怎么才能得到正确的结果??
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

下一个 Dev-C++ 看看。

下载地址:https://www.cr173.com/soft/21025.html
想知道小甲鱼最近在做啥?请访问 -> 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都不兼容???你确定这个可以兼容》????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可以兼容。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

但是我这个vs2013怎么办才能得到正确结果???
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 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编译通过。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢大哥

终于解决了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

终于解决了

OK,可以的话麻烦采纳一下设置为最佳。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

可是为什么输入20,得到的却是一个负数??????疑问?????????????????????
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

这种东西自己搜一下int范围就行了,越界了。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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


想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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



想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

用long long 如果还不够就用unsigned long long
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

不会吧,我的win10运行vc6.0没问题啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-1-16 07:55

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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