c语言编程问题

 我来答
贰彤云凭怿
2019-02-21 · TA获得超过3万个赞
知道大有可为答主
回答量:9602
采纳率:30%
帮助的人:1098万
展开全部
我解释下递归函数吧:f(6)中有f(6/2)即f(3)和printf函数,但要等f(3)执行完后才执行printf函数(输出6),f(3)中有f(3/2)即f(1)和printf函数,但要等f(1)执行完后才执行printf函数(输出3)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
粘代卉普煦
2020-04-13 · TA获得超过3万个赞
知道小有建树答主
回答量:1.1万
采纳率:31%
帮助的人:660万
展开全部
这是个递归问题,fun()函数在函数体内部又调用了自己。
具体解法可以这样理解:
1、执行if(x/2>0)
2、若结果为真,执行fun(x/2);,后面那句printf("%d",x);暂时不执行
3、当执行完fun(x/2)[里面可能还包含了fun()这样的调用],再执行第2步中未执行的printf("%d",x);
举例:fun(6);
1、执行if(6/2>0)
2、由于6/2=3,所以,执行fun(6/2),即fun(3),这时,printf("%d",x=6)这句暂时不执行,等fun(3)执行完了再执行。
3、执行fun(3),这又是一个fun()函数,所以,仍然先判断if(3/2>0),
4、显然,3/2=1,大于0,这时,先执行fun(1/2),printf("%d",x=3)暂不执行,等fun(1/2)执行完了再执行
5、1/2=0,所以,不符合要求,执行printf("%d",x=1);
6、这时,fun(1/2)便执行完了,接着,需要执行刚才未执行的printf("%d",x=3)
7、printf("%d",x=3)也执行完了,需要执行刚才未执行的printf("%d",x=6)
最后,得到的结果就是136

对于
main0
{
int
x=20;
printf("%d“,0<x<20);
printf("%d",0<x&&x<20);}
这个是一个判断条件的问题。关键是要看这几个符号的结合顺序。
0<x<20);自左向右结合,首先是判断0<x,由于x=20,显然,这个是真,结果是1,接着,1<20,这个也是真,所以,整个表达式的结果是1
0<x&&x<20,等价于(0<x)&&
(x<20),左边是真,右边是假,&&要两边是真,结果才是真,所以,这个表达式的结果是假,即0
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式