c++递归问题(说清楚点)

来源:百度知道 编辑:UC知道 时间:2024/09/21 14:45:31
#include<iostream>
using namespace std;
void stack(char c);
int main()
{
char d;
cin>>d;
stack(d);
cout<<endl;

system("pause");
return 0;
}
void stack(char c)
{
if (c!='#')
{
char d;
cin>>d;
stack(d);
cout<<c;
return ;
}
else
{
return;
}
}
if (c!='#')
{
char d; //不是在主函数里面输入过了吗?为什么还要输入?
cin>>d;
stack(d); //这里又要干什么?
cout<<c;
return ;
}
else
{
return

要是就输入一次还要数据结构干啥用, 既然是模拟栈就得输入多次呗

至于过程,就是不停的输入数据直到遇到#,然后再倒退着打印回来。 这样相当于演示一下递归中调用栈的情况

如果你是不理解为啥他要用这么绕的方法, 其实这就是一个演示, 当然没人会用这么蠢的方法真正做事情

看书去。。

为什么还要输入是看这个程序想干啥

你想问啥?

主函数里的d和stack里的d没有关系,两个的的有效范围不重叠,所以输入一个和另一个没关系。
第二个stack(d)是调用自身,也就是所谓的递归。