C++的递归调用函数:

#include <iostream>
using namespace std;
void stack(char c);
int main()
{
char d;
cin>>d;
stack(d);
cout<<endl;
return 0;
}

void stack(char c)
{
if(c!='#')
{
char d;
cin>>d;
stack(d);
cout<<c;
return;
}
else
return;
}
功能:直到输入的字符是#,就反序输出所有的字符。
这函数是怎么实现输出多个字符的呢?在stack()函数里,不是一执行到stack(d)就返回判断字符是否为#了吗?
到底是怎么实现反序并输出多个字符的?
if()里面的return是什么时候执行的,执行后他返回的是哪里?
运行到if()语句中的stack(d)时,不就返回去重新调用自己吗?
那么他下面的cout<<c;和return就不执行?

你抓住,调用完返回调用处,画图理解一下,如输入ABCD#

温馨提示:内容为网友见解,仅供参考
第1个回答  2012-03-27
看注释
void stack(char c)
{
if(c!='#')
{
char d;
cin>>d;
cout<<c; //改一下顺序,编译执行一下就明白了
stack(d);
//cout<<c;
return;
}
else
return;
}

return是你的void stack(char c)的返回值啊?因为是void,有没有无所谓的。
不告诉你,换一下语句顺序编译执行看看结果吗,cout<<c排在stack(d)后面,所以一直调用stack(d)直到碰到个#才结束,然后才开始依次cout<<c本回答被网友采纳
相似回答
大家正在搜