c语言执行顺序 怎么得到135 不懂为什么1之后还可以把1234和123456在执行

[复制链接]
查看11 | 回复3 | 2011-9-5 08:06:03 | 显示全部楼层 |阅读模式
#includestdio.hvoidf(longx){if(x100){printf(\"%d\",x/10);}else{f(x/100);printf(\"%d\",x0/10);}}
回复

使用道具 举报

千问 | 2011-9-5 08:06:03 | 显示全部楼层
你实际上执行了3个printf,为了让你明确,我帮你写出他们分别对应的x值x=12printf(\"%d\",x/10);x=1234printf(\"%d\",x0/10);x=123456printf(\"%d\",x0/10);所以得到135还不明白?你调用f(x/100);后还要执行printf(\"%d\",x0/10);不要忘记了
回复

使用道具 举报

千问 | 2011-9-5 08:06:03 | 显示全部楼层
这个是个递归调用埃步骤大概是这样,你输入1234561.运行到f(123456),走到f(123456/100)这一步2.f(123456/100)就是f(1234)走到f(1234/100)这一步3.f(1234/100)就是f(12)走到if(x100)这个里面,打印出14.f(12)这个函数执行结束,回到step2中未走完的printf(“%d”,12340/10)打印出35.f(1234)走完,然后调回到step1中未走完的printf(“%d”,1234560/10)答应出5来然后这个f(123456)执行结束。
回复

使用道具 举报

千问 | 2011-9-5 08:06:03 | 显示全部楼层
这是递归调用,在f()中又调用了f()。你是想就得到1吗?#includestdio.hvoidf(longx){if(x100){printf(\"%d\",x/10);}else{f(x/100);//printf(\"%d\",x0/10);}}main(){f(123456);}这样的运行结果就是1以上
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行