Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

汉诺塔c++程序

作者:冰残°零度伤   发布日期:2025-09-21   浏览:102

#include <iostream>
#include <stack>
using namespace std;

// 汉诺塔递归函数
void hanoi(int n, char from_rod, char to_rod, char aux_rod) {
    if (n == 1) {
        cout << "Move disk 1 from rod " << from_rod << " to rod " << to_rod << endl;
        return;
    }
    // 将 n-1 个盘子从起始柱移动到辅助柱
    hanoi(n - 1, from_rod, aux_rod, to_rod);
    // 将第 n 个盘子从起始柱移动到目标柱
    cout << "Move disk " << n << " from rod " << from_rod << " to rod " << to_rod << endl;
    // 将 n-1 个盘子从辅助柱移动到目标柱
    hanoi(n - 1, aux_rod, to_rod, from_rod);
}

int main() {
    int n; // 盘子的数量
    cout << "Enter the number of disks: ";
    cin >> n;
    // 调用汉诺塔函数,参数分别为:盘子数量,起始柱,目标柱,辅助柱
    hanoi(n, 'A', 'C', 'B');
    return 0;
}

解释说明:

  1. hanoi 函数:

    • 这是一个递归函数,用于解决汉诺塔问题。
    • n 是当前需要移动的盘子数量。
    • from_rod 是起始柱(即原始柱)。
    • to_rod 是目标柱(即最终要移动到的柱)。
    • aux_rod 是辅助柱(用于暂时存放盘子)。
  2. 递归逻辑:

    • 如果只有一个盘子 (n == 1),直接将它从起始柱移动到目标柱。
    • 否则,先将 n-1 个盘子从起始柱移动到辅助柱(使用目标柱作为辅助)。
    • 然后将第 n 个盘子从起始柱移动到目标柱。
    • 最后将 n-1 个盘子从辅助柱移动到目标柱(使用起始柱作为辅助)。
  3. main 函数:

    • 用户输入盘子的数量 n
    • 调用 hanoi 函数来解决汉诺塔问题,并输出每一步的移动操作。

通过这个程序,你可以看到如何使用递归来解决经典的汉诺塔问题。

上一篇:c++ 内部类

下一篇:c++强制转换

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++格式化字符串

c++ orm框架

队列c++

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站