用 cpp 实现汉诺塔
时间: 2024-05-04 22:15:50 浏览: 26
Sure, we can implement the Tower of Hanoi problem in C++. Here's one way to do it:
```
#include <iostream>
using namespace std;
void towerOfHanoi(int n, char rodFrom, char middleRod, char rodTo)
{
if (n == 1)
{
cout << "Move disk 1 from rod " << rodFrom << " to rod " << rodTo << endl;
return;
}
towerOfHanoi(n - 1, rodFrom, rodTo, middleRod);
cout << "Move disk " << n << " from rod " << rodFrom << " to rod " << rodTo << endl;
towerOfHanoi(n - 1, middleRod, rodFrom, rodTo);
}
int main()
{
int n;
cout << "Enter the number of disks: ";
cin >> n;
towerOfHanoi(n, 'A', 'B', 'C');
return 0;
}
```
This program takes the number of disks as input and calls the `towerOfHanoi()` function to solve the problem. The function takes three parameters, `n` is the number of disks, `rodFrom` is the rod from which the disks are moved, `middleRod` is the intermediate rod used for moving disks, and `rodTo` is the rod where the disks are moved to.
The `towerOfHanoi()` function is implemented recursively. When there is only one disk to move, it directly moves it from `rodFrom` to `rodTo`. When there are more disks, it first moves the `n-1` disks from `rodFrom` to `middleRod` using `rodTo` as the intermediate rod, then moves the largest disk from `rodFrom` to `rodTo`, and finally moves the `n-1` disks from `middleRod` to `rodTo` using `rodFrom` as the intermediate rod.
Hope this helps!