| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 965 人关注过本帖
标题:初学者问个递归的问题
只看楼主 加入收藏
kissyoume
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-8-1
结帖率:0
收藏
 问题点数:0 回复次数:8 
初学者问个递归的问题
fun(int n,int *s)
{
  int f1,f2;
  if(n==1||n==2) *s=1;
  else
  {  fun(n-1,&f1);
     fun(n-2,&f2);
     *s=f1+f2;
   }
}
void main()
{  
  int x;
  fun(6,&x);
  printf("%d\n",x);
}
麻烦有没有老师跟我讲下 过程 我理解的比较乱 最后结果是8 但不知怎么来的
搜索更多相关主题的帖子: 递归 
2010-09-12 13:57
hahayezhe
Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15
来 自:湖南张家界
等 级:贵宾
威 望:24
帖 子:1386
专家分:6999
注 册:2010-3-8
收藏
得分:0 
在fun内下个断点
然后一步一步调式 查看堆栈
就很清楚了!
2010-09-12 14:00
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
void main()
{  
  int x;这里X没有初始化为0下不然结果是难预测的
  fun(6,&x);
  printf("%d\n",x);
}

清风拂暮(木)
2010-09-12 14:07
A13433758072
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:广东潮州
等 级:小飞侠
威 望:1
帖 子:1182
专家分:2784
注 册:2010-7-22
收藏
得分:0 
fun(int n,int *s) {   int f1,f2;定义整型变量   if(n==1||n==2)条件为真的就执行下面语句 *s=1;   else否则就执行任务下面花括号里语句   {  fun(n-1,&f1);      fun(n-2,&f2);      *s=f1+f2;    } } void main()从这开始 {   int x;定义整型变量   fun(6,&x);调用函数,就是上面那函数   printf("%d\n",x);输出调用函数计算的结果 }

一步一个脚印...............................默默地前进.....
诚邀乐于解答c菜鸟问题,的热心网友加入,  QQ群38490319
2010-09-12 14:19
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
这个一步一步讲以来挺多的

清风拂暮(木)
2010-09-12 20:13
清风拂晓
Rank: 8Rank: 8
来 自:火星
等 级:蝙蝠侠
威 望:1
帖 子:356
专家分:889
注 册:2010-8-13
收藏
得分:0 
先递归fun(n-1,&f1);得到*S1=1,即F1为1 再递归fun(n-2,&f2);得到F2为1 ,得到*S=1+1=2; 再递归fun(n-1,&f1);得到*S1=2,即F1为2;再递归fun(n-2,&f2);得到F2为2 ,得到*S=2+2=4;再递归fun(n-1,&f1);得到*S1=4,即F1为4;再递归fun(n-2,&f2);得到F2为4 ,得到*S=4+4=8;结束;这主要是fun(n-2,&f2);N要从6到2,所以相当要循环2次 ,再加本来的先递归fun(n-1,&f1);得到*S1=1,即F1为1 再递归fun(n-2,&f2);得到F2为1 ,得到*S=1+1=2;就可以得到*S=8了

清风拂暮(木)
2010-09-12 20:45
sd2930357
Rank: 2
等 级:论坛游民
帖 子:19
专家分:28
注 册:2010-7-25
收藏
得分:0 
简单来说要得到一个真实的值要递归到fun(2,x)=fun(1,x)+f(0,x)=1,fun(1,x)=1
fun(3,x)=f(2,x)+fun(1,x)=2
fun(4,x)=fun(3,x)+fun(2,x)=2+1=3
fun(5,x)=fun(4,x)+fun(3,x)=3+2=5
fun(6,x)=fun(5,x)+fun(4,x)=5+3=8

所以结果为8


2010-09-12 22:32
encounter
Rank: 5Rank: 5
来 自:扬州
等 级:职业侠客
威 望:2
帖 子:150
专家分:359
注 册:2010-7-24
收藏
得分:0 
1,1,2,3,5,8,13..........
An=An-1+An-2
A1=A2=1

ping   nbtstat   netstat   tracert    nat   at    ftp   telnet..................
2010-09-12 22:49
kissyoume
Rank: 1
等 级:新手上路
帖 子:17
专家分:0
注 册:2008-8-1
收藏
得分:0 
懂了 谢谢各位老师
2010-09-13 14:39
快速回复:初学者问个递归的问题
数据加载中...
 
   



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

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