| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 678 人关注过本帖
标题:问个关于递归函数的
只看楼主 加入收藏
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
结帖率:70%
收藏
 问题点数:0 回复次数:9 
问个关于递归函数的
int fac(int n)
{static int f=1;  
          f=f*n;  
      return(f); }     谁能抽空讲解下这个 它是如何运算的


我看了一些递归函数的例子还是看不懂啊   谁能教教我
搜索更多相关主题的帖子: return 如何 
2011-09-29 16:35
jeanine123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:65
专家分:192
注 册:2011-9-17
收藏
得分:0 
这个函数是递归函数吗?我怎么觉得他不是啊,不知道楼主觉得呢。
2011-09-29 16:41
czsbc
Rank: 10Rank: 10Rank: 10
等 级:青峰侠
帖 子:469
专家分:1700
注 册:2008-12-13
收藏
得分:0 
估计LZ抄错了
2011-09-29 16:45
kd83kdi93
Rank: 2
等 级:论坛游民
帖 子:65
专家分:52
注 册:2011-9-18
收藏
得分:0 
不好意思 我弄错了   我换一个啊
int add(int i)
{
int result = i;
i++;
if (i == 101)
return result;
else
{
result += add(i);
}
return result;
}   
2011-09-29 16:54
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
回复 4楼 kd83kdi93
教材解释最清楚,我保证,回去看书吧,老谭好想用几个小孩之间,年龄来说明,很容易理解的

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2011-09-29 17:06
jeanine123
Rank: 3Rank: 3
等 级:论坛游侠
威 望:2
帖 子:65
专家分:192
注 册:2011-9-17
收藏
得分:0 
我觉得递归,就是在某一条件下自己调用自己,等到条件不符合了,程序就结束了。(纯属个人意见)
2011-09-30 08:17
zjk103
Rank: 2
等 级:论坛游民
帖 子:22
专家分:60
注 册:2011-5-13
收藏
得分:0 
LZ一开始发的果断不是递归,在4楼的应该是递归,就以4楼为例,整个流程是,若主函数调用子函数add(),参数值假设为98,则i=98,result=98,i++之后i=99,然后判断If语句,因为i!=101,所以执行else语句result=add(i)调用子函数add(),注意此时i=99,所以i=99,result=99,i++之后i=100,然后判断If语句,因为i!=101,所以执行else语句result=add(i)再调用子函数add(),注意此时i=100,所以i=100,result=100,i++之后i=101,然后判断If语句,因为i==101,所以执行return result;语句,此时result==100,把它返回到上一次的else语句result=add(i),因为上一次的result是99,add(i)是100,所以else语句的结果是199,然后执行return result;,将result的值作为add(i)返回到第一次的else语句result=add(i),此时的result是98,add(i)是199,说以else语句的结果是199+98,这个值就是子函数最终要返回给主函数的值。


   
PS:呵呵,因为我也刚学过这个没多久,表述有些不清楚,大家多多包涵啊,嘿嘿,刚刚差点把自己绕晕了,这个的中心就是你把最基础求的值要一级一级返回上去的,LZ多多体会吧,能力有限只能表达到这种程度了,欢迎大牛继续补充啊,我也顺便在学习一下!!
2011-09-30 10:31
yucwei
Rank: 2
等 级:论坛游民
帖 子:25
专家分:46
注 册:2007-10-10
收藏
得分:0 
程序代码:
int add(int i)
{
int result = i;
printf("i1=%d\n",i);
i++;
printf("i2=%d\n",i);
if (i == 101)
return result;
else
{
result += add(i);
}
return result;
}   

//运行程序分析分析i1与i2的数值变化,应该可以明白了。
2011-09-30 10:43
fedcab123
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:168
专家分:100
注 册:2011-9-3
收藏
得分:0 
原来递归不光是减法啊
2011-09-30 12:52
韩54521风
Rank: 4
等 级:业余侠客
帖 子:75
专家分:212
注 册:2011-6-11
收藏
得分:0 
int add(int i) -------------------------定义add函数
{  int result = i;        -------------定义整形变量i
   i++;   -----------------------------i自加1               
   if (i == 101)------------------------如果i的值等于101时
   return result;---------------------返回result
   else      --------------------------否则
  {
    result += add(i);-------------------result的值再加上add(i)的值,add(i)重复前面定义,判断,直到result的值等于101为止输出result的值
  }
  return result;---------------------------个人以为没有用,可以去掉
}  
2011-09-30 13:47
快速回复:问个关于递归函数的
数据加载中...
 
   



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

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