图解汉诺塔问题(递归求解) – WZQ的博客

图解汉诺塔问题(递归求解) – WZQ的博客

汉诺塔:汉诺塔(Tower of 河内可追踪的印度惯例,梵天用三根金刚石柱造成了贴边,在内地一根柱子自下而上保护着64个金盘。。印度产的牛被印度产的牛命令从下到下重行位盘。。并规则,不克不及在小磁盘上缩小磁盘,一次不得不在三列私下提议东西磁盘。                        –援用维基百科

单看如此地成绩的撰文稍许的参加困惑,这是自然,不顾成绩撰文多复杂我,在你构造东西细目的图案领先这是个谜。,复杂地用词语表达言撰文少数算学或算法成绩,这也与全世界的领会和思想方式关系到。,这显示了算学的力气,算学使成绩不再模糊不清,由决定因素和表达结合的图案使成绩不再是明晰的。,惋惜我算学不好的,看来咱们以后的得向后伸展数数、概率论这些供应出生于。

做了少数切题的评论,下面来对汉诺塔成绩停止解说和构造图案

    这是草图。,A是起首列。,C是目的柱,B起过渡功能

    在转变手术时间,不得不确保大巴扎集市发生小规模的竞赛在昏迷中,一次不得不提议东西磁盘,基本事实,C柱上有所局部盘子,它们都在季节性竞赛必要的东西记录中。。

    很多时分,当你钞票这些鸡蛋瘀伤和被垄断的时分,你会想、灯火通明就像碧水,嗯,有很多吃的,东西同志般的凶恶地笑了,道:直系的切换C和A是不敷的,据我看来如此地同志般的可能性是放弃了,或许适宜了东西小人物。

    成绩如同否认复杂,当柱上只许多板时,只需将该板直系的提议到C,

    假如有两个板,率先将1号提议到B列,将盘2提议到C列,基本事实,将B列上的激光唱片1提议到C列,

    但如今咱们要提议64个盘子。,假如咱们本身手工生产用手操作的话,这幅画会很美的,任何的无根据的无赖的人都可以尝试,可取之处去网上调查汉诺塔的小游戏,它还可以帮忙您却更地领会成绩。

让我用形象的撰文64块板的转变诉讼顺序。

  

    在在这里,咱们率先从作为一个整体上看下面的63个盘子,那是两个盘子。,自然,这一言可尽。,咱们只必要结尾两个盘子的转变,好吧,如今让咱们疏忽第六十4盘子,承担A柱只63个板,和先前类似于的receive 接收,前62个板块结尾提议目的Firs。

    嗯,浸地,你可以找到可以直系的提议的托盘。,62,61,60,……,2,1,终极,顶板可以直系的提议到C柱,那一言可尽。,咱们的2号托盘也可以结尾到C柱的过渡。,这时c柱上时早已转适宜功的2个盘,因而第三个托盘没成绩。,磁盘64领先。

    这是我用C引起的信号:

using System;
using System.Collections.Generic;

namespace 汉诺塔成绩_重新提起处理
{
   
    class Program
    {       
        static void 主(字母行 决定因素)
        {
            HanNuo(64, A, ''b'', ''c'');

            ();
        }

        /// 
        /// 汉诺塔成绩处理方式
        /// 
        /// 汉诺塔的层数
        /// 装有初始圆盘的鼓吹
        /// 一根柱子,起着过渡的功能。
        /// 提议到目的外景
        static void HanNuo(int n, char a, char b, char c)
        {
            if (n == 1)   这亦重新提起的结局必要的
            {
                (出生于板[0 {1} -----> {2}", n, a, c); 控制台为每回用手操作输入板的提议。
            }
            else
            {
                HanNuo(n - 1, a, c, b);      将A列上的N-1激光唱片完全提议到列上
                (出生于板[0 {1} -----> {2}", n, a, c);
                HanNuo(n - 1, b, a, c);      将B柱上的N-1板提议到C柱A上
            }
        }
    }
}

      信号很精练的,或许助动词=have那不太懂重新提起的先生来说很难,让我细目解说一下重新提起诉讼顺序。

       当n=64时,成搬到B柱的前63种方式,64号是古老的。,他非物质的下面63个弟弟在做什么,我可以先等。,前63名先生可以用我的C-PILLA,因而64在等候下面的63提议到B列,如今63人是暂时当首领,他也想去C栏,因而他命令前62个移到B列,他在等。,62号也采取了前两种方式。,因而定货单一向在前面,没尺寸,它太紧了,动无穷。。

        咱们算是到了冠军,他是眼前鞋底生气勃勃的的人,因而1号移到B列,好了,2号可以抵达C柱,2先到界标,我很煽动。,我去了C栏,处于轻松的。但当他在A栏钞票3号时,突如其来的惊喜,我仍然东西掌管。,好吧,咱们不得不结尾这项责任,因而把1号移到C列,3号已预备好进入B列,较晚地,1号和2号审判抵达B列,因而1,2,B栏3号,4号一眼就很使满意,但我得到了B柱。,嗯,1,2,第三,你和合理的类似于去C栏,把B柱给我。唉,而且翻腾,从5号到63号执意如此。,基本事实,前63个提议到B列,第64列直奔C列,他觉得这些弟弟生产力很低,但他最好还是把弟弟叫到C栏。

    如此,留在B栏的63个弟弟不得相异的在科勒姆那么做。,看一眼在这里。,1号用手操作频率很大的,64只必要提议一次,假如确凿民族如此做。,据我看来我疯了相当长的时间了。

      假如你真的想解说信号工具的每一步,那将是一团糟。,两级重新提起,基本事实,我会沮丧,而且反复思考,此刻,只需领会重新提起终极处理的成绩。,中心的提到顺序,重新提起可以是环形的,也可以是直系的的。,让咱们遵照最直系的的领会。

  基本事实,对重新提起算法,只电脑才称赞如此地成绩的receive 接收。,让咱们看一下如此复杂的信号,不过必要很多脑细胞才干真正领会,不过重新提起在中心的算学中确凿具有精练的性和逻辑的的美。。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

Message *
Name*
Email *