递归:汉诺塔 · 分而治之

把 n 个盘从 A 经 B 移到 C:先移上 n−1 个到 B → 移最大盘到 C → 再移 n−1 个到 C(n=3 共 2³−1=7 步)
递归三步 Hanoi(n, A→C, 借 B) ① Hanoi(n−1, A → B, 借 C) 把上面 n−1 个盘 A → B ② 移最大盘 A → C 单独把最下面那个盘移到目标 ③ Hanoi(n−1, B → C, 借 A) 把 n−1 个盘从 B 移回 C 基准情形:n==1 时直接移一个盘 void Hanoi(int n,char A,char C,char B){ if(n==1){ move(A,C); return; } Hanoi(n-1, A, B, C); // ① move(A, C); // ② Hanoi(n-1, B, C, A); // ③ } 执行 A B C 辅助 目标 0 / 7 步 完成!3 个盘全部移到 C,共 7 步