用C++语言编写一个五层汉诺塔
时间: 2024-10-19 13:16:20 浏览: 22
C++实现汉诺塔算法经典实例
汉诺塔是一种经典的递归问题,通常使用三个柱子来移动一堆大小不同的圆盘。以下是使用C++编写解决汉诺塔问题的五层(即有5个圆盘)版本的简单示例:
```cpp
#include <iostream>
using namespace std;
// 定义函数,递归地完成汉诺塔操作
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
if (n > 0) { // 如果圆盘不止一个
hanoi(n - 1, from_rod, aux_rod, to_rod); // 把前n-1个圆盘从起始柱移到辅助柱
cout << "Move disk " << n << " from rod " << from_rod << " to rod " << to_rod << endl; // 移动最大的圆盘到目标柱
hanoi(n - 1, aux_rod, to_rod, from_rod); // 再把剩下的n-1个圆盘从辅助柱移到目标柱
}
}
int main() {
int num_disks = 5; // 汉诺塔层数设定为5
hanoi(num_disks, 'A', 'C', 'B'); // A代表起始柱,C代表目标柱,B代表辅助柱
return 0;
}
```
当运行这个程序时,它会按照汉诺塔的规则逐步将五个圆盘从起始柱'A'移动到目标柱'C',通过中间辅助柱'B'作为临时存储。
阅读全文