| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1941 人关注过本帖
标题:这是个求阶乘的程序,可是不知道哪里错了,哪个大神帮忙看一下。输出的结果 ...
只看楼主 加入收藏
柚夏怪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-9-7
结帖率:25%
收藏
已结贴  问题点数:20 回复次数:8 
这是个求阶乘的程序,可是不知道哪里错了,哪个大神帮忙看一下。输出的结果总是不对
#include <iostream>
int f(int n)
{
    if(n < 0)
    {
        return -1;
    }
    if(n == 0)
    {
        return 0;
    }
    int re = 1;
    for(int i=1;i<=n;++i)
    {
        re=re*i;
    }
    return re;
}
int main()
{
    int n;
    std::cin>>n;
    std::cout<<f(n);
    return 0;
}
搜索更多相关主题的帖子: include return 
2016-09-15 09:15
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:5 
没有错啊?你发个运行截图看看??
2016-09-15 09:54
柚夏怪
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2016-9-7
收藏
得分:0 
回复 2楼 追寻XT
才发现发错代码了   这个大于二十的数就不可以了
#include <iostream>
#include<stdlib.h>
int f(int n)
{
    if(n < 0)
    {
        return -1;
    }
    if(n = 0)
    {
        return 0;
    }
    int re = 1;
    for(int i=1;i<=n;++i)
    {
        re=re*i;
    }
    return re;
}
int main()
{
    int size = 10;
    int *p = (int*)malloc(sizeof(int)*size);
    int n;
    std::cin>>n;
    for(int i=0; ;i++)
    {
        if(f(n)>=size)
        {
            int *q=(int*)malloc(sizeof(int)*2*size);
            size = 2*size;
            free(p);
            p=q;
        }
    }
    std::cout<<f(n);
    return 0;
}
2016-09-15 10:02
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9025
专家分:54030
注 册:2011-1-18
收藏
得分:5 
回复 3楼 柚夏怪
你是不是认为int类型能表达任意大小的数值?
2016-09-15 19:20
追寻XT
Rank: 2
等 级:论坛游民
威 望:1
帖 子:37
专家分:32
注 册:2014-8-20
收藏
得分:0 
一种一般换用别的数据类型。如long long等,与程序的健壮性有关。
2016-09-15 20:06
书生牛犊
Rank: 14Rank: 14Rank: 14Rank: 14
来 自:星夜征程
等 级:贵宾
威 望:10
帖 子:1101
专家分:5265
注 册:2015-10-27
收藏
得分:5 
我之前做过输出“1-50”的阶乘。使用int数组做的。现在代码搞丢了。

楼主应该对20个数的阶乘的那个数有多大有个概念从10乘到20,就算10个10相乘这都10位数了。20的阶乘可想而知。如果楼主打算测试更长的数据。
我认为这道题你应该用int数组去做,原理就和我们小学做竖式计算一样一位一位往上成,满十进一。

φ(゜▽゜*)♪
2016-09-15 21:44
yangfrancis
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:141
帖 子:1510
专家分:7661
注 册:2014-5-19
收藏
得分:5 
数据溢出。再加上n=0不同于n==0
2016-09-15 22:09
hfutwwh
Rank: 1
等 级:新手上路
帖 子:1
专家分:0
注 册:2016-10-12
收藏
得分:0 
2016-10-12 22:24
StadyC
Rank: 6Rank: 6
等 级:侠之大者
威 望:6
帖 子:182
专家分:430
注 册:2016-10-13
收藏
得分:0 
首先你要知道,0的阶乘也是1。然后n = 0是把0赋值给n的意思,并不是判断n是否等于0

2016-10-14 10:33
快速回复:这是个求阶乘的程序,可是不知道哪里错了,哪个大神帮忙看一下。输出的 ...
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.028862 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved