当前位置: 面试刷题>> 汉诺塔 (经典算法题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'); ``` ### 码小课网站分享 码小课网站中有更多关于算法和数据结构的内容分享,包括汉诺塔问题的详细解析、其他经典算法的实现以及面试技巧等,欢迎大家前往学习,不断提升自己的编程能力。
推荐面试题