返回信息流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;
}
请问这是为什么呢,希望给出详细的解释,尤其是后一种输出逆序的情况,谢谢
这是一条镜像帖。来源:北邮人论坛 / soft-design / #23696同步于 2007/12/30
该镜像源已超过 30 天没有更新,可能在源站已被删除。
SoftDesign机器人发帖
请教一个c++的问题
kelaude
2007/12/30镜像同步6 回复
订阅后,新回复会通过你的通知中心匿名送达。
6 条回复
【 在 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。
了解递归最好的方法就是找个简单的例子手动模拟计算机执行过程。
【 在 Xer 的大作中提到: 】
: 典型的递归逆序输出。
: 假设输入123
: 1---先读入1,1!='\n',调用q()(注意,进入了q函数,所以后面那句cout会等到此次调用退出才执行,也就是说1在最后才打印);
: ...................
excellent
【 在 Xer 的大作中提到: 】
: 典型的递归逆序输出。
: 假设输入123
: 1---先读入1,1!='\n',调用q()(注意,进入了q函数,所以后面那句cout会等到此次调用退出才执行,也就是说1在最后才打印);
: ...................
说的太好了