当前位置: 面试刷题>> 汉诺塔 (经典算法题500道)
### 题目描述补充
汉诺塔(Tower of Hanoi)是一个经典的递归问题。它包含三根柱子和n个不同大小的盘子,这些盘子开始时都按照大小顺序叠放在第一根柱子上,大的在下,小的在上。目标是将这些盘子移动到第三根柱子上,同时满足以下条件:
1. 每次只能移动一个盘子。
2. 在任何时候,三根柱子中的每一根都不能出现大盘子在小盘子下面的情况。
3. 可以利用第三根柱子作为辅助。
### 示例代码
以下是使用PHP、Python和JavaScript编写的汉诺塔问题的递归解决方案示例。
#### PHP 示例
```php
```
#### Python 示例
```python
def hanoi(n, from_rod, to_rod, aux_rod):
if n == 1:
print(f"Move disk 1 from rod {from_rod} to rod {to_rod}")
return
hanoi(n-1, from_rod, aux_rod, to_rod)
print(f"Move disk {n} from rod {from_rod} to rod {to_rod}")
hanoi(n-1, aux_rod, to_rod, from_rod)
# 调用函数,假设有3个盘子
hanoi(3, 'A', 'C', 'B')
```
#### JavaScript 示例
```javascript
function hanoi(n, from, to, aux) {
if (n === 1) {
console.log(`Move disk 1 from rod ${from} to rod ${to}`);
return;
}
hanoi(n - 1, from, aux, to);
console.log(`Move disk ${n} from rod ${from} to rod ${to}`);
hanoi(n - 1, aux, to, from);
}
// 调用函数,假设有3个盘子
hanoi(3, 'A', 'C', 'B');
```
### 码小课网站分享
码小课网站中有更多关于算法和数据结构的内容分享,包括汉诺塔问题的详细解析、其他经典算法的实现以及面试技巧等,欢迎大家前往学习,不断提升自己的编程能力。