#3324. [GESP202309 五级 C++] 第 6 题

[GESP202309 五级 C++] 第 6 题

印度古老的汉诺塔传说:创世时有三根金刚柱,其中一柱从下往上按照大小顺序摞着64片黄金圆盘,当圆盘逐一从一柱借助另外一柱全部移动到另外一柱时,宇宙毁灭。移动规则:在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。下面的C++代码以递归方式实现汉诺塔,横线处应填入代码是( )。

#include <iostream>
using namespace std;
// 递归实现汉诺塔,将N个圆盘从A通过B移动C
// 圆盘从底到顶,半径必须从大到小
void Hanoi(string A, string B, string C, int N) {
    if (N == 1) {
        cout << A << " -> " << C << endl;
    } else {
        Hanoi(A, C, B, N - 1);
        cout << A << " -> " << C << endl;
        _________; // 此处填写代码
    }
}
int main() {
    Hanoi("甲", "乙", "丙", 3);
    return 0;
}

{{ select(1) }}

  • Hanoi(B, C, A, N - 2)
  • Hanoi(B, A, C, N - 1)
  • Hanoi(A, B, C, N - 2)
  • Hanoi(C, B, A, N - 1)