| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 465 人关注过本帖
标题:函数递归
只看楼主 加入收藏
duzhiming
Rank: 1
等 级:新手上路
帖 子:86
专家分:0
注 册:2012-2-13
结帖率:62.07%
收藏
 问题点数:0 回复次数:9 
函数递归
  5 int fun(int a)
  6 {
  7         if(a > 0)
  8
  9         return fun(--a)+a       ;
 10 }
 11
 12  int main(int argc, char* argv[])
 13   {
 14       printf("%d\n",fun(4) );
 15     return 0;
 16   }
不知道这个函数是怎样返回的   14行输出   6  为什么;

搜索更多相关主题的帖子: return 
2013-10-12 21:09
jia3111
Rank: 2
等 级:论坛游民
帖 子:37
专家分:92
注 册:2012-9-20
收藏
得分:0 
应该是在于--a吧,--a,是a值本身没有变化,a还是等于4;
2013-10-12 21:36
zhaogay
Rank: 7Rank: 7Rank: 7
来 自:宫
等 级:黑侠
帖 子:151
专家分:586
注 册:2013-10-10
收藏
得分:0 
fun(4)=fun(3)+3=fun(2)+2+3=fun(1)+1+2+3=fun(0)+0+1+2+3;应该这样的,但是单独输出fun(0),我这输出为2,不知道为什么(补充:fun(0)在不同位置值一般会变,在fun里最后嵌套的fun(0)都是0,也不像是个地址

[ 本帖最后由 zhaogay 于 2013-10-12 22:27 编辑 ]

好好学习,天天想上
2013-10-12 21:47
embed_xuel
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:58
帖 子:3845
专家分:11385
注 册:2011-9-13
收藏
得分:0 
fun函数有问题,如果a不大于0,函数返回的是什么?

总有那身价贱的人给作业贴回复完整的代码
2013-10-12 22:22
x_x
Rank: 2
等 级:论坛游民
帖 子:44
专家分:43
注 册:2012-10-16
收藏
得分:0 
看递归函数的作用应该是求1+2+3+...+n。
问题在第九句。
fun(--a)+a  ; 这句的问题就和 --a+a 是一样的。应该改为fun(a-1)+a;
2013-10-12 23:19
天空编程
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:53
专家分:123
注 册:2013-7-5
收藏
得分:0 
我这么感觉这个程序有很大的问题呢?
 return fun(--a)+a这句语句感觉根本就不可能等于0,
也就说函数是一直在调用。
int main([int argc, char* argv[])这里的那些参数是干嘛的?
2013-10-13 00:07
a592963144
Rank: 2
等 级:论坛游民
帖 子:41
专家分:95
注 册:2013-9-27
收藏
得分:0 
main()中fun(4)  fun()中 a=4;
a=4>0 return fun(3)+3
                  |
        a=3>0   return fun(2)+2
                            |
                 a=2>0    return fun(1)+1
                                 |
                        a=1>0   return fun(o)+0
                                         |
                                    a=0>0为假 fun(0)无返回值
我是这么理解的 fun(4)=fun(3)+3=fun(2)+2+3=fun(1)+1+2+3=fun(0)+0+1+2+3=6
2013-10-13 11:58
天才也会死机
Rank: 1
来 自:湖南
等 级:新手上路
帖 子:2
专家分:0
注 册:2013-10-12
收藏
得分:0 
因为--a是先减再赋值的,所以--a=3,a=3,输出的结果是  6
2013-10-13 13:37
qunxingw
Rank: 16Rank: 16Rank: 16Rank: 16
等 级:贵宾
威 望:24
帖 子:1676
专家分:7295
注 册:2011-6-30
收藏
得分:0 
递归分二步,1找函数的出口,即找出函数在某个参数时此函数的一个具体的值或一个具体的表现形式。第2步,找出函数的抽象的普遍的规律,参数有一个递减或递增的关系。

www.qunxingw.wang
2013-10-13 18:53
awisebird_
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:82
专家分:185
注 册:2013-7-6
收藏
得分:0 
代码粘贴不规范,stdio.h都不加呀
2013-10-13 22:27
快速回复:函数递归
数据加载中...
 
   



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

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