递归算法实战:从汉诺塔到快速幂与链表操作
本文涉及专题一算法题链接
1 汉诺塔问题
题目描述

汉诺塔问题(递归解法)
1. 问题描述
汉诺塔是经典的递归问题,规则如下:
- 有三根柱子,记为 A(起始柱)、B(辅助柱)、C(目标柱)。
- A 柱上有 n 个盘子,从小到大叠放(从上到下编号为 1 到 n)。
- 目标是将所有盘子从 A 移到 C,每次只能移动一个盘子,并且大盘子不能放在小盘子上面。

2. 递归思想
基本情况(递归终止条件)
当 n = 1 时,直接将 A 最上面的盘子移到 C。
递归分解(n ≥ 2)
若要将 A 上的 n 个盘子移到 C,可以分解为三个步骤:
- 将 A 上除了最底下的盘子(即上面 n-1 个盘子)移到 B(借助 C 作为辅助柱)。
- 将 A 最底下的最大盘子移到 C。
- 将 B 上的 n-1 个盘子移到 C(借助 A 作为辅助柱)。
这样,规模为 n 的问题被拆分为两个规模为 n-1 的子问题。















