美文网首页
笔记02:汉诺塔递归问题

笔记02:汉诺塔递归问题

作者: Wayne_Dream | 来源:发表于2018-10-23 17:54 被阅读75次

游戏的目标:把A杆上的圆盘全部移到C杆上,并仍保持原有顺序叠好。
操作规则:每次只能移动一个盘子,并且在移动过程中三根杆上都始终保持大盘在下,小盘在上,操作过程中盘子可以置于A、B、C任一杆上。

详见视频
在B站看到这个up的讲解,瞬间领悟,讲的非常好!在这里贴一个c++实现的代码。
关键点就是把目标任务拆解为三部分:
假设目标是将N个盘子从A移动到C,那么就可以拆解为先将N-1个盘子从A借助C移到B,再将A中的底盘移动到C,最后将B借助A移动到C,依次循环,直到只剩一个盘子。

c++

#include <iostream>

using namespace std;

void Hanoi(int n, char x, char y, char z)
{
    if (n == 1)
    {
        cout << x << "--->" << z << endl;
    }
    else
    {
        Hanoi(n - 1, x, z, y);
        cout << x << "--->" << z << endl;
        Hanoi(n - 1, y, x, z);
    }
}

int main()
{
    int num;
    cout << "请输入汉诺塔层数" << endl;
    cin >> num;
    Hanoi(num, 'A', 'B', 'C');
    system("pause");
    return 0;
}

相关文章

  • 笔记02:汉诺塔递归问题

    游戏的目标:把A杆上的圆盘全部移到C杆上,并仍保持原有顺序叠好。操作规则:每次只能移动一个盘子,并且在移动过程中三...

  • 数据结构与算法-递归分治-汉诺塔思想

    折半查找算法的递归实现 思想:减少查找序列的长度,分而治之地进行关键字的查找 汉诺塔问题 汉诺塔是我们递归思想,分...

  • 数据结构算法之递归和栈结构

    递归 程序调用自身的编程技巧称为递归简单案例:n的阶乘 汉诺塔 汉诺塔问题描述:3个柱为a、b、c,圆盘最初在a柱...

  • Python 汉诺塔的实现

    汉诺塔的实现,是一个典型的递归问题,当然越是复杂的递归问题越是考验人的抽象思维; 哈哈哈,言归正传,汉诺塔问题如下...

  • 汉诺塔递归

    学习汉诺塔递归算法

  • 2.22学堂在线python笔记,递归

    @[TOC](2.22学堂在线python笔记,递归) # 知识点 1. 汉诺塔问题为了计算实际上移动整个塔到另一...

  • python例子

    利用递归函数移动汉诺塔

  • 递归——汉诺塔问题

    我参考了两位大佬的代码,其中一位是日本的专业程序员。比较有意思的是他出的面向要考试的群体的那本书讲了这个,后来大概...

  • 复杂递归问题:汉诺塔

    复杂递归问题:汉诺塔 汉诺塔问题是法国数学家Edouard Lucas于1883年, 根据传说提出来的。 传说在一...

  • 算法分析与设计

    递归汉诺塔问题: https://blog.csdn.net/xb2355404/article/details/...

网友评论

      本文标题:笔记02:汉诺塔递归问题

      本文链接:https://www.haomeiwen.com/subject/wuiazftx.html