为什么总是理解不好递归呢!
题目是:一个栈一次压入1,2,3,则栈顶到栈底就是3,2,1,将这个栈转置后,栈顶到栈底变为1,2,3
#include<iostream>
using namespace std;
#include<stack>
//将栈的栈底元素返回并移除
int getAndRemoveLastElement(stack<int>& s)
{
int res=s.top();
s.pop();
if(s.empty())
return res;
else
{
int last=getAndRemoveLastElement(s);
s.push(res);
return last;
}
}
void reverse(stack<int>& s)
{
if(s.empty())
return;
int i=getAndRemoveLastElement(s);
reverse(s);
s.push(i);
}
int main()
{
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
reverse(s);
system("pause");
return 0;
}