Hanoi 塔问题的递归算法用C++写
时间: 2023-09-24 22:02:48 浏览: 91
好的,下面是 Hanoi 塔问题的递归算法的 C++ 代码:
```cpp
#include <iostream>
using namespace std;
void hanoi(int n, char from, char to, char via) {
if (n == 1) {
cout << "Move disk 1 from " << from << " to " << to << endl;
return;
}
hanoi(n - 1, from, via, to);
cout << "Move disk " << n << " from " << from << " to " << to << endl;
hanoi(n - 1, via, to, from);
}
int main() {
int n;
cout << "Enter the number of disks: ";
cin >> n;
hanoi(n, 'A', 'C', 'B');
return 0;
}
```
在这个程序中,我们首先定义了一个 `hanoi` 函数,它接受三个参数:盘子的数量 `n`,起始柱子 `from`,目标柱子 `to`,以及中间柱子 `via`。在函数内部,我们使用递归来解决问题。当 `n` 等于 1 时,我们直接将盘子从起始柱子移动到目标柱子;否则,我们先将前 `n-1` 个盘子从起始柱子移动到中间柱子,然后将最后一个盘子从起始柱子移动到目标柱子,最后再将前 `n-1` 个盘子从中间柱子移动到目标柱子。
在 `main` 函数中,我们首先从用户处读取盘子的数量 `n`,然后调用 `hanoi` 函数来解决问题。我们将起始柱子设为 A,目标柱子设为 C,中间柱子设为 B。
阅读全文