| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 2593 人关注过本帖
标题:关于递归阶乘问题 答案老是0,求大神指点
取消只看楼主 加入收藏
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
结帖率:57.14%
收藏
已结贴  问题点数:10 回复次数:6 
关于递归阶乘问题 答案老是0,求大神指点
//运用递归计算出n以内所以数的阶乘之和
# include <stdio.h>
int f(int n);
int sum(double n);

int main (void)
{
    double n;

    printf("Please input you want 阶乘 number: ");
    scanf("%lf", &n);


    printf("sum = %lf\n", sum(n));

    return 0;
}

//n的阶乘
int f(double n)
{
    if(n == 0 || n==1)
    {
        return 1;
    }
    else
    {
        return n*f(n-1);        //运用递归的原理,不断调用自身
    }
}

//遍历n以内的每个数,把每个数的阶乘相加
int sum(double n)
{
    double i;
    double sum;
    for(i=1; i<=n; i++)
        sum += f(i);
    return sum;
}

[此贴子已经被作者于2016-4-20 11:54编辑过]

2016-04-20 11:52
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 2楼 zhulei1978
谢谢,现在可以有结果了,我吧函数类型也改了,但是不明白为什么要把sum赋初值才可以呢
2016-04-20 12:17
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 4楼 nupt_陈小二
为什么一定要sum赋初值呢
2016-04-20 12:21
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 3楼 grmmylbs
换成了double但是后面太多0了,我想换成long long int好像提示是 非法的,怎么整
2016-04-20 13:52
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 7楼 zhulei1978
将才实验了一下,好像没有赋初值也不会有问题的啊,这个是怎么回事呢
# include <stdio.h>

int main (void)
{
    int i;
    int j = 5, k = 3;
    i = j +k;

    printf("%d\n", i);

    return 0;
}

/*
--------------
输出结果:
        8
--------------
*/
2016-04-20 13:57
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 10楼 grmmylbs
这个确实,就要就是那得赋初值。谢谢哈  
2016-04-20 14:10
hc407647719
Rank: 1
等 级:新手上路
帖 子:25
专家分:0
注 册:2014-4-21
收藏
得分:0 
回复 12楼 zhulei1978
明白了,谢谢哈
2016-04-20 15:52
快速回复:关于递归阶乘问题 答案老是0,求大神指点
数据加载中...
 
   



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

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