c++递归算法汉诺塔
时间: 2023-08-03 09:25:38 浏览: 106
c++用递归方法求解汉诺塔问题
好的,以下是C++递归算法实现汉诺塔的代码:
```c++
#include <iostream>
using namespace std;
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
cout << "Move disk 1 from " << A << " to " << C << endl;
return;
}
hanoi(n-1, A, C, B);
cout << "Move disk " << n << " from " << A << " to " << C << endl;
hanoi(n-1, B, A, C);
}
int main() {
int n;
cout << "Enter the number of disks: ";
cin >> n;
hanoi(n, 'A', 'B', 'C');
return 0;
}
```
在这个代码中,函数 `hanoi` 是递归函数,它的参数 `n` 表示要移动的盘子数,参数 `A`、`B`、`C` 分别表示三个柱子。递归的基础情况是只有一个盘子,直接将它从 `A` 柱子移动到 `C` 柱子。否则,我们需要先将前 `n-1` 个盘子从 `A` 柱子移动到 `B` 柱子上,再将最后一个盘子从 `A` 柱子移动到 `C` 柱子上,最后将前 `n-1` 个盘子从 `B` 柱子移动到 `C` 柱子上。
希望这段代码能对你有所帮助!
阅读全文