用递归算法实现hanoi问题
时间: 2024-06-13 19:03:45 浏览: 79
递归算法实现一系列问题
汉诺塔问题是一个经典的递归问题,可以用递归算法来解决。汉诺塔问题的规则如下:有三个柱子A、B、C,A柱子上有n个盘子,盘子大小不一,大的在下面,小的在上面。现在要把A柱子上的盘子全部移到C柱子上,但是移动过程中有以下限制:每次只能移动一个盘子,大盘子不能放在小盘子上面。请看下面的代码实现:
```
void hanoi(int n, char A, char B, char C) {
if (n == 1) {
cout << "Move disk " << n << " from " << A << " to " << C << endl; } else {
hanoi(n - 1, A, C, B);
cout << "Move disk " << n << " from " << A << " to " << C << endl;
hanoi(n - 1, B, A, C);
}
}
```
其中,n表示盘子的数量,A、B、C表示三个柱子的名称。当n等于1时,直接将盘子从A柱子移动到C柱子;当n大于1时,先将n-1个盘子从A柱子移动到B柱子,再将第n个盘子从A柱子移动到C柱子,最后将n-1个盘子从B柱子移动到C柱子。这样就完成了整个移动过程。
阅读全文