| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 657 人关注过本帖
标题:求助!
只看楼主 加入收藏
evanstacy
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-7-13
收藏
 问题点数:0 回复次数:8 
求助!
请问这段程序错在哪里阿?

#include <stdio.h>
long fun(int  n)
{
    if (n>1)
        return (n*fun(n-1));
}
main()
{
    printf("10!=%ld\n", fun(10));
}
搜索更多相关主题的帖子: include return 
2008-08-05 19:10
qingxin111
Rank: 2
等 级:论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
收藏
得分:0 
long fun(int  n){
    if(n==1)
        return…………;
    else if (n>1)
        return (n*fun(n-1));
}
2008-08-05 20:39
pish
Rank: 1
等 级:新手上路
帖 子:35
专家分:0
注 册:2007-10-6
收藏
得分:0 
else return 1;
else return 1;

2008-08-06 13:14
xujun1207
Rank: 1
等 级:新手上路
帖 子:79
专家分:0
注 册:2008-7-15
收藏
得分:0 
printf("10!=%ld\n", fun(10));这句怎么得来的?
2008-08-06 13:28
zamboninite
Rank: 2
等 级:论坛游民
帖 子:66
专家分:20
注 册:2007-10-6
收藏
得分:0 
3楼的比较简单

另外注意 long的范围,太大就算不出来了
2008-08-06 13:39
evanstacy
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-7-13
收藏
得分:0 
3楼说的是对的,我试过了
#include <stdio.h>
long fun(int  n)
{
    if (n>1)
        return (n*fun(n-1));
     else
        return 1;
}
main()
{
    printf("10!=%ld\n", fun(10));
}

这个程序是对的,但是能再清楚一点告诉我这个return 1;有什么用吗? 为什么要用到这条语句的,我不明白为什么要用到它,请再给我解释一下阿,谢谢!!!

软件设计师 君羊:36405332
2008-08-06 15:41
eagle8810
Rank: 1
等 级:新手上路
帖 子:13
专家分:0
注 册:2008-8-5
收藏
得分:0 
return (n*fun(n-1));
这段语句可以看成是f(x)=x*f(x-1)
                  f(x)=x*(x-1)*(x-2)*……*(x-m)*f(x-m-1)
if(n>1)限制了f(x)=x*f(x-1)成立的条件是x>1
所以f(x)=x*(x-1)*(x-2)*……*(2)f(1)
所以应该把f(1)给赋值了,不然到这里会出现问题。
else return 1可以理解成if(n<=1) return 1
就是让f(1)=1。
2008-08-06 22:54
adam1600
Rank: 1
等 级:新手上路
帖 子:23
专家分:0
注 册:2008-3-1
收藏
得分:0 
因为long fun(int  n)是一个有返回值的函数,
所以函数运行到最后必须要有一个值返回.
你上面的当n=1时函数没有返回任何值,所以是错的.
2008-08-07 00:22
evanstacy
Rank: 1
等 级:新手上路
帖 子:47
专家分:0
注 册:2008-7-13
收藏
得分:0 
7楼的朋友解释得很详细,我终于明白是怎么回事了,太谢谢你了!!!同样也谢谢所有回贴的朋友!

软件设计师 君羊:36405332
2008-08-07 15:26
快速回复:求助!
数据加载中...
 
   



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

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