上面的是非递归实现的(循环+堆栈),下面的是用递归实现的(函数)。
这是非递归的:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
typedef struct {
int n;
char a,b,c;
}node;
node x,t;
int main()
{
ll i,j,k;
ll n;
cin>>n;
x.n=n;
x.a='a'; x.b='b'; x.c='c';
stack<node> s;
s.push(x);
while(!s.empty())
{
x=s.top(); s.pop();
if(x.n==1) printf("%c -> %c\n",x.a,x.c);
else
{
t.n=x.n-1; t.a=x.b; t.b=x.a; t.c=x.c;
s.push(t);
t.n=1; t.a=x.a; t.b=x.b; t.c=x.c;
s.push(t)