正经题解|汉诺塔
2026-04-28 20:19:54
发布于:河北
0阅读
0回复
0点赞
废话少说,上代码
#include<iostream>
using namespace std;
// 汉诺塔递归函数:将n个盘子从柱子a移动到柱子b,使用柱子c作为辅助
// 参数说明:
// n: 盘子数量
// a: 起始柱子
// b: 目标柱子
// c: 辅助柱子
void Hanoi(int n,char a,char b,char c){
// 递归终止条件:当没有盘子需要移动时返回
if(n==0) return;
// 第一步:将前n-1个盘子从a移动到c,使用b作为辅助
Hanoi(n-1,a,c,b);
// 第二步:将第n个盘子(最大的盘子)从a移动到b
cout<<a<<" --"<<n<<"--> "<<b<<"\n";
// 第三步:将n-1个盘子从c移动到b,使用a作为辅助
Hanoi(n-1,c,b,a);
}
int main(){
// 提高输入输出效率的设置
ios::sync_with_stdio(false); // 取消iostream与stdio的同步
cin.tie(nullptr); // 解除cin与cout的绑定
cout.tie(nullptr); // 解除cout与其他流的绑定
int n=0; // 定义盘子数量变量
cin>>n; // 输入盘子数量
// 调用汉诺塔函数:将n个盘子从A柱移动到C柱,使用B柱作为辅助
Hanoi(n,'A','C','B');
return 0;
}
这里空空如也








有帮助,赞一个