| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 410 人关注过本帖
标题:函数递归调用问题
只看楼主 加入收藏
iqyuankong
Rank: 2
等 级:论坛游民
帖 子:68
专家分:10
注 册:2009-10-23
结帖率:92.86%
收藏
已结贴  问题点数:20 回复次数:2 
函数递归调用问题
帮忙讲解下以下程序运行过程

fun(int x)
{
  if(x==0||x==1) return 3;
  p=x-fun(x-2);
  return p;
}
main()
{  
   printf("%d\n",fun(7));
}
搜索更多相关主题的帖子: 函数 递归 
2010-03-17 20:33
lixnkei
Rank: 4
来 自:樱之国度
等 级:业余侠客
帖 子:133
专家分:227
注 册:2008-5-13
收藏
得分:0 
程序代码:
fun(int x)  //接受主函数传递的数值,x为7
{
  if(x==0||x==1) return 3; //判断为真,返回3,并结束fun函数
  p=x-fun(x-2); // p从何而来?(把7-2后重新调用自己,如前面的if为真,这里就不执行了)
  return p;     //返回p的值,并结束fun函数(但前面的if为真,这里已经不执行了)
}
main()
{ 
   printf("%d\n",fun(7));//把7传递给fun函数的x
} 



[ 本帖最后由 lixnkei 于 2010-3-17 21:26 编辑 ]


老师说:会写代码的人多如牛毛,但写得很规范的却不多。代码要规范,养成好习惯~!
2010-03-17 21:01
mikelr
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:67
专家分:161
注 册:2010-3-17
收藏
得分:20 
fun(7) = 7 - fun(5)
fun(5) = 5 - fun(3)
fun(3) = 3 - fun(1)
fun(1)   返回3 //if(x==0||x==1) return 3

fun(3) = 3 - 3 = 0
fun(5) = 5 - 0 = 5
fun(7) = 7 - 5 = 2

最后的结果是2
2010-03-17 21:11
快速回复:函数递归调用问题
数据加载中...
 
   



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

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