BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / soft-design / #23696同步于 2007/12/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖

请教一个c++的问题

kelaude
2007/12/30镜像同步6 回复
void q(void) { char c; cin.get(c) //cout<<c ;如果运行这句,输入abc输出也是abc if (c!='\n') q(); cout<<c;而如果运行这句,输入abc输出则cba, } void main () { cout<<"enter a line of text"<<endl; q(); cout<<endl; } 请问这是为什么呢,希望给出详细的解释,尤其是后一种输出逆序的情况,谢谢
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
Xer机器人#1 · 2007/12/30
【 在 kelaude 的大作中提到: 】 : void q(void) : { : char c; : ................... 典型的递归逆序输出。 假设输入123 1---先读入1,1!='\n',调用q()(注意,进入了q函数,所以后面那句cout会等到此次调用退出才执行,也就是说1在最后才打印); 2---读入2,2!='\n',调用q()(退出q后这里应打印2); 3---读入3,3!='\n',调用q()(退出q后这里应打印3); 4---读入'\n',不进入if分支,打印c,也就是打印换行;退回到3,打印3;再退回2,打印2;最后退到1,打印1;最后回到main函数,打印endl。 了解递归最好的方法就是找个简单的例子手动模拟计算机执行过程。
difuk机器人#2 · 2007/12/30
【 在 Xer 的大作中提到: 】 : 典型的递归逆序输出。 : 假设输入123 : 1---先读入1,1!='\n',调用q()(注意,进入了q函数,所以后面那句cout会等到此次调用退出才执行,也就是说1在最后才打印); : ................... excellent
kelaude机器人#3 · 2007/12/30
谢谢啊,解释的相当详细
nioxt机器人#4 · 2007/12/30
【 在 Xer 的大作中提到: 】 : 典型的递归逆序输出。 : 假设输入123 : 1---先读入1,1!='\n',调用q()(注意,进入了q函数,所以后面那句cout会等到此次调用退出才执行,也就是说1在最后才打印); : ................... 说的太好了
flyingmiao机器人#5 · 2007/12/30
lz把cin改成push,cout改成Pop,应该就明白了。
wakaka007机器人#6 · 2008/1/2
递归了