搜索
编程论坛
→
开发语言
→
『 C语言论坛 』
→ 求助!
标题:
求助!
只看楼主
evanstacy
等 级:
新手上路
帖 子: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
等 级:
论坛游民
帖 子:71
专家分:29
注 册:2008-4-10
第
2
楼
得分:0
long fun(int n){
if(n==1)
return…………;
else if (n>1)
return (n*fun(n-1));
}
2008-08-05 20:39
pish
等 级:
新手上路
帖 子:35
专家分:0
注 册:2007-10-6
第
3
楼
得分:0
else return 1;
else return 1;
2008-08-06 13:14
xujun1207
等 级:
新手上路
帖 子:79
专家分:0
注 册:2008-7-15
第
4
楼
得分:0
printf("10!=%ld\n", fun(10));这句怎么得来的?
2008-08-06 13:28
zamboninite
等 级:
论坛游民
帖 子:66
专家分:20
注 册:2007-10-6
第
5
楼
得分:0
3楼的比较简单
另外注意 long的范围,太大就算不出来了
2008-08-06 13:39
evanstacy
等 级:
新手上路
帖 子:47
专家分:0
注 册:2008-7-13
第
6
楼
得分: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
等 级:
新手上路
帖 子:13
专家分:0
注 册:2008-8-5
第
7
楼
得分: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
等 级:
新手上路
帖 子:23
专家分:0
注 册:2008-3-1
第
8
楼
得分:0
因为long fun(int n)是一个有返回值的函数,
所以函数运行到最后必须要有一个值返回.
你上面的当n=1时函数没有返回任何值,所以是错的.
2008-08-07 00:22
evanstacy
等 级:
新手上路
帖 子:47
专家分:0
注 册:2008-7-13
第
9
楼
得分:0
7楼的朋友解释得很详细,我终于明白是怎么回事了,太谢谢你了!!!同样也谢谢所有回贴的朋友!
软件设计师 君羊:36405332
2008-08-07 15:26
9
1/1页
1
参与讨论请移步原网站贴子:
https://bbs.bccn.net/thread-226937-1-1.html
关于我们
|
广告合作
|
编程中国
|
清除Cookies
|
TOP
|
手机版
编程中国
版权所有,并保留所有权利。
Powered by
Discuz
, Processed in 1.499606 second(s), 7 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved