#F205. 汉诺塔

汉诺塔

【问题描述】

汉诺塔(Tower of Hanoi)是一个经典的递归问题。有三根柱子 A、B、C,其中 A 柱上有 n 个大小不同的圆盘,按大小从小到大叠放(小的在上,大的在下)。要求将所有圆盘从 A 柱移动到 C 柱,移动过程中可以借助 B 柱,且必须遵守以下规则:

  • 每次只能移动一个圆盘;
  • 任何时候都不能将较大的圆盘放在较小的圆盘上面。

请编写递归程序,输出总共移动的步数,再输出移动的每一步(格式:A->B 表示将一个圆盘从 A 柱移动到 B 柱)。

【输入说明】

一行一个正整数 n,表示圆盘的数量。约定 1 ≤ n ≤ 20。

【输出说明】

第一行输出总步数 Step = 总步数。 接下来若干行,每行一个移动操作,格式为 X->Y,其中 X 和 Y 为大写字母 A、B 或 C。

【数据样例】

3
A->C
A->B
C->B
A->C
B->A
B->C
A->C
Step = 7