当前位置:首页 C++ > 正文

c++经典的递归案例:汉诺塔问题

作者:野牛程序员:2023-11-20 10:00:19 C++阅读 2882

c++经典的递归案例:汉诺塔问题

#include <iostream>

// 经典的递归案例:汉诺塔问题
void hanoi(int n, char source, char auxiliary, char target) {
    // 基本情况:如果只有一个盘子,直接从源柱移动到目标柱
    if (n == 1) {
        std::cout << "移动盘子 1 从 " << source << " 到 " << target << std::endl;
    } else {
        // 递归调用:
        // 1. 将n-1个盘子从源柱经过目标柱移动到辅助柱
        // 2. 将第n个盘子从源柱移动到目标柱
        // 3. 将n-1个盘子从辅助柱经过源柱移动到目标柱
        hanoi(n - 1, source, target, auxiliary);
        std::cout << "移动盘子 " << n << " 从 " << source << " 到 " << target << std::endl;
        hanoi(n - 1, auxiliary, source, target);
    }
}

int main() {
    // 移动3个盘子的汉诺塔问题
    hanoi(3, 'A', 'B', 'C');

    return 0;
}


野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
野牛程序员教少儿编程与信息学竞赛-微信|电话:15892516892
相关推荐

最新推荐

热门点击