很经典的递归题目
void dg(char a, char b, char c, int n)a, b, c分别表示这三个杆子,n表示目前圆盘的个数
然后步骤:
目的:将a上面n个圆盘移动到c上面
第一步:将a上面的n - 1个圆盘移动到b上面
第二步:将a最下面的1个圆盘移动到c上面
第三步:将b上面的n - 1个圆盘移动到v上面
所以递归函数就是:
void dg(char a, char b, char c, int n){
if(n == 0) return ;
dg(a, c, b, n - 1);
cout << a << " " << c << endl;
dg(b, a, c, n - 1);
}
非常的煎蛋(不要深究,容易绕晕)
总代码:
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
#define int long long
#define IOS ios::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define HelloWorld IOS;
void dg(char a, char b, char c, int n){
if(n == 0) return ;
dg(a, c, b, n - 1);
cout << a << " " << c << endl;
dg(b, a, c, n - 1);
}
signed main(){
HelloWorld;
int n; cin >> n;
dg('A', 'B', 'C', n);
return 0;
}



京公网安备 11010502036488号