汉诺塔问题c++递归实现
时间: 2024-06-22 17:01:04 浏览: 99
汉诺塔问题是经典的递归问题,它涉及到三个柱子和一些大小不同的圆盘。目标是将所有圆盘从第一个柱子移动到第三个柱子,但任何时候都只能移动一个圆盘,并且大的圆盘不能放在小的圆盘之上。下面是使用C++递归实现汉诺塔问题的一个简单示例:
```cpp
#include <iostream>
using namespace std;
// 定义函数,表示将n个圆盘从源柱(src)移动到目标柱(dst)
void hanoi(int n, char src, char aux, char dst) {
if (n > 0) { // 当有圆盘时
// 将n-1个圆盘从源柱移动到辅助柱
hanoi(n - 1, src, dst, aux);
// 将最后一个圆盘从源柱移动到目标柱
cout << "Move disk " << n << " from " << src << " to " << dst << endl;
// 将n-1个圆盘从辅助柱移动到目标柱
hanoi(n - 1, aux, src, dst);
}
}
int main() {
int disks; // 假设用户输入圆盘数量
cout << "Enter the number of disks: ";
cin >> disks;
// 开始调用hanoi函数,从A柱子开始,B柱子作为辅助,最终到达C柱子
hanoi(disks, 'A', 'B', 'C');
return 0;
}
```
阅读全文