| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 332 人关注过本帖
标题:if语句问题
只看楼主 加入收藏
沙龙0
Rank: 1
等 级:新手上路
帖 子:20
专家分:0
注 册:2012-7-12
结帖率:83.33%
收藏
 问题点数:0 回复次数:3 
if语句问题
#include <stdio.h>
void fun(int x)
{ if(x/5>0) fun(x/5);
printf("%d",x);}
    main()
{ fun(11);printf("\n");
}      答案为什么是 211?
搜索更多相关主题的帖子: include fun void 
2012-09-21 10:30
heishu
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:42
专家分:131
注 册:2012-9-7
收藏
得分:0 
是,递归调用,刚开始可能很难理解,
程序代码:
#include <stdio.h>
void fun(int x)
{ if(x/5>0) fun(x/5);  //大于零调用-------->void fun(int x)
printf("%d",x);} //输出11   //                    { if(x/5>0) fun(x/5);//不大于零,不调用.
    main()                 //   《-------返回到函数 printf("%d",x);}//输出2,
{ fun(11);printf("\n");
}  



[ 本帖最后由 heishu 于 2012-9-21 14:56 编辑 ]

[qq]1402050187[/qq]
2012-09-21 10:57
梦幻尘
Rank: 2
等 级:论坛游民
帖 子:33
专家分:34
注 册:2012-8-26
收藏
得分:0 
#include <stdio.h>
void fun(int x)
{ if(x/5>0) fun(x/5);
printf("%d",x);}//主要是你没加换行符,printf("%d\n",x)
    main()
{ fun(11);printf("\n");
}
结果 2
     11.
你试下。
2012-09-21 11:39
张朝成
Rank: 4
等 级:业余侠客
帖 子:149
专家分:265
注 册:2012-3-22
收藏
得分:0 
#include <stdio.h>
 void fun(int x)
 { if(x/5>0) fun(x/5);
 printf("%d",x);}
     main()
 { fun(11);printf("\n");
 }     
从主函数(main)开始看,第一句语句就开始调用fun函数,因为实参11传给x,由x/5>0可知,fun函数中递归递归调fun函数,但是现在的实参是x/5,因为现在实参已改变,所以形参随之改变,即为x/5,由x/5/5可知,此时if语句为假,故执行输出语句,此时输出值为2,在一次执行输出语句,此时值为11.故整个程序的输出结果为211.
2012-09-22 02:43
快速回复:if语句问题
数据加载中...
 
   



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

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