← 返回学科目录

汉诺塔递归算法可视化

最直观的递归过程演示 - 同步显示调用栈与盘子移动全过程

递归调用栈

程序开始,等待执行...
调用栈说明

汉诺塔问题:将n个圆盘从A柱移到C柱,每次只能移动一个盘,大盘不能放在小盘上。递归解法:①将n-1个盘从A经C移到B;②将第n个盘从A移到C;③将n-1个盘从B经A移到C。总移动次数=2ⁿ-1。

move(n, from, to, via)

参数含义:将 n 个盘子从 from 柱移动到 to 柱,借助 via 柱。

高亮表示当前正在执行的调用。

绿色边框表示已执行完成的调用。

汉诺塔动画

盘子数量
4
动画速度
5
步骤: 0 / 15
最小盘子
最大盘子
当前移动的盘子

执行信息

当前操作
等待开始...
递归规则
1. 如果只有一个盘子,直接移动
2. 否则:
  a. 将 n-1 个盘子从 A 移到 B(借助 C)
  b. 将第 n 个盘子从 A 移到 C
  c. 将 n-1 个盘子从 B 移到 C(借助 A)
算法步骤

1. 选择盘子数量 (1-8)

2. 点击"开始"按钮观看动画

3. 使用"单步前进"仔细分析每一步

4. 观察左侧调用栈与动画的同步关系

5. 理解递归的分治思想