#include <iostream>
#include <stack>
using namespace std;
// 汉诺塔递归函数
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n == 1) {
cout << "Move disk 1 from rod " << from_rod << " to rod " << to_rod << endl;
return;
}
// 将 n-1 个盘子从起始柱移动到辅助柱
hanoi(n - 1, from_rod, aux_rod, to_rod);
// 将第 n 个盘子从起始柱移动到目标柱
cout << "Move disk " << n << " from rod " << from_rod << " to rod " << to_rod << endl;
// 将 n-1 个盘子从辅助柱移动到目标柱
hanoi(n - 1, aux_rod, to_rod, from_rod);
}
int main() {
int n; // 盘子的数量
cout << "Enter the number of disks: ";
cin >> n;
// 调用汉诺塔函数,参数分别为:盘子数量,起始柱,目标柱,辅助柱
hanoi(n, 'A', 'C', 'B');
return 0;
}
hanoi 函数:
n
是当前需要移动的盘子数量。from_rod
是起始柱(即原始柱)。to_rod
是目标柱(即最终要移动到的柱)。aux_rod
是辅助柱(用于暂时存放盘子)。递归逻辑:
n == 1
),直接将它从起始柱移动到目标柱。n-1
个盘子从起始柱移动到辅助柱(使用目标柱作为辅助)。n
个盘子从起始柱移动到目标柱。n-1
个盘子从辅助柱移动到目标柱(使用起始柱作为辅助)。main 函数:
n
。hanoi
函数来解决汉诺塔问题,并输出每一步的移动操作。通过这个程序,你可以看到如何使用递归来解决经典的汉诺塔问题。
上一篇:c++ 内部类
下一篇:c++强制转换
Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3
Laravel 中文站