如何解汉诺塔问题

作者&投稿:侨呢 (若有异议请与网页底部的电邮联系)
~ 汉诺塔是一个迭代问题,我们先假设x层汉诺塔从第一根柱子移动到最后一根柱子(目标柱子)的最快次数是f(x)次
显然f(1)=1
f(2)=3
然后看3层的,我们可以把整个过程分解为三个部分
一,把第一第二层移动到中间的柱子(过渡柱子),最快f(2)步
二,把第三层移动到最后一根柱子(目标柱子),最快1步
三,把刚才移动到中间柱子的第一第二层移动到最后一根柱子,最快f(2)步
所以f(3)=f(2)+1+f(2)=7
然后以此类推
f(4)=f(3)+1+f(3)=15
f(5)=f(4)+1+f(4)=31
f(6)=f(5)+1+f(5)=63
f(7)=f(6)+1+f(6)=127
f(8)=f(7)+1+f(7)=255
f(9)=f(8)+1+f(8)=511

PS.如果学习过数列的话,这个其实可以得到更为一般的递推公式
f(x+1)=2*f(x)+1
再进一步,可以得到通项公式为
f(x)=2^x-1


汉诺塔的名字由何而来 为什么叫汉诺塔
汉诺塔:汉诺塔(又称河内塔)问题是源于印度一个古老传说的益智玩具。上帝创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上安大小顺序摞着64片黄金圆盘。上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。

求Linux下汉诺塔程序详细解释~~
不要把简单问题复杂化,汉诺塔其实很简单,通过它你关键在理解递归原理就行,何必纠结于这些让人费解的上面的垃圾代码!汉诺塔程序如下:include <iostream> include <string> using namespace std;int sum=0;\/ 为了移动A上面的圆盘到C上面,仅能借助B:首先由A将n-1个较小的圆盘移至B,然后将A上剩...

游戏《群星》神秘堡垒事件怎么过?
首先,你需要派一艘科研船前往,但能源注入并非易事。策展人会给出关键的建议,告诉你精确到何种程度的能量注入才能顺利开启通道,这一步至关重要,过多或过少都可能导致失败。接下来,考验你的空间智慧的时刻来临了。你需要重构圆环,这其实是一个经典的汉诺塔问题,但在这里,策展人的智慧如同星辰般...

梵塔的网络解释梵塔的网络解释是什么
梵塔的网络解释是:梵塔(古印度传说)梵塔,也称汉内塔,汉诺塔,河内塔。问题是印度的一个古老的传说。后来,这个传说就演变为汉诺塔游戏。梵塔的网络解释是:梵塔(古印度传说)梵塔,也称汉内塔,汉诺塔,河内塔。问题是印度的一个古老的传说。后来,这个传说就演变为汉诺塔游戏。结构是:梵(上下结构)塔(...

什么是递推法和递归法
直至我们要求的解。 所谓逆推法从已知问题的结果出发,用迭代表达式逐步推算出问题的开始的条件,即顺推法的逆过程,称为逆推。问题九:什么是递归算法 递归算法就是一个函数通过不断对自己的调用而求得最终结果的一种思维巧妙但是开销很大的算法。比如:汉诺塔的递归算法:void move(char x,char y){...

算法效率与分析
“数据结构+算法=程序”,这就说明程序设计的实质就是对确定的问题选择一种合适的数据结构,加上设计一种好的算法。由此可见,数据结构在程序设计中有着十分重要的地位。数据结构是相互之间存在一种或多种特定关系的数据元素的集合。因为这其中的“关系”,指的是数据元素之间的逻辑关系,因此数据结构又称为数据的逻辑...

拓展训练第二天
      首先是勇闯雷区,我们需要从各自的入口进入雷区,走出一条安全通道。教练给示范之后,我们分组交替进行,每次每组一人进去雷区。刚开始我们都是各自为政,各走各的路。当我们走投无路时,想到何不跟着对方的路走?他们安全的,我们也是安全的。他们进入地雷了,我们避开就行。

运维工程师笔试题
4. 从问题某一初始或推测值出发,一步步的攀登给定目标。 5. 尽可能快的去逼近更好的解,当达到某一步不能继续时终止。 Question 27. (多选) 算法的特征包括 1. 有穷性 2. 确定性 3. 输入和输出 4. 能行性或可行性 Question 28. (单选) 汉诺塔(Hanoi)问题中令h(n)为从A移动n个金片到C上所用的...

递归函数通常是用来解决什么问题的?
具体地,整个问题的解决,可以分为两部分:第一部分是一些特殊情况,有直接的解法;第二部分与原问题相似,但比原问题的规模小。实际上,递归是把一个不能或不好解决的大问题转化为一个或几个小问题,再把这些小问题进一步分解成更小的问题,直至每个小问题都可以直接解决。因此,递归有两个基本要素:...

游黄冈市市科技馆作文
第二天我们又学到了关于万花筒的知识.老师叫我们把五层的汉诺塔和六层的汉诺塔的规律找出来,我们想了半天也没找出规律来.后来老师在投影机上提示了我们一下,我们很快就明白了道理,找出规律来了.快乐的时间总是过得很快,我们带着很多的收获,依依不舍的离开了科技管馆,希望下学期还能来到这里.望采纳!

吉首市13269574990: hanoi塔问题的c语言解法及解析 -
韶虏西咪: c程序设计(谭浩强)和数据结构中都涉及函数的递归调用.数据结构的重要性是不可言喻的.因此该程序的思想要掌握.一般不好解决的问题我们可以把抽象问题的具体化.比如取n=3.按照你上面的程序:n=3时执行 hanoi(2,a,c,b).当执行它...

吉首市13269574990: 汉诺塔问题思路 -
韶虏西咪: 汉诺塔这个问题,在考虑它递归的时候,别想着我们真实移动的步骤,我当时也总是觉得很乱.你要这样考虑: 1, 2, 3 最初都在1上,最后要移动到3上.所以把除了最后一块都移动到2上,最后一块移动到3上,再把2的都移动到3上.这个过程...

吉首市13269574990: 汉诺塔问题的算法分析及C++实现1.当仅有1个盘子时,把这个盘子从A塔柱移动到C塔柱上2.当圆盘的个数多于1个时,如下解决:(1) 先将A塔柱上的(n - 1... -
韶虏西咪:[答案] hanoi函数的目的是解决汉诺塔的移动序列,它有4个参数:1.n表示要移动的盘子的个数2.一开始盘子在哪个柱子上,这个变量叫a,所以可以说,一开始在a柱子上4.最后盘子要移动到哪个柱子上,这个变量叫c,所以可以说,最后要移...

吉首市13269574990: 汉诺塔 问题求解 -
韶虏西咪: 可以用代数法求出公式:当盘子的数量为n时,最少步数为2^n-1

吉首市13269574990: 如何推导汉诺塔的公式 -
韶虏西咪: 求汗诺塔N个盘子须几次移动时得到了下面的递推公式:a[1] = 1;a[n] = a[n-1] * 2 + 1;请教通项公式?a[1] = 1;a[n] = a[n-1] * 2 + 1;可得a[i]= 2^i-1;证明,采用数学归纳法:1、猜想a[i]= 2^i-12、当i=1时,显然成立.3、假设i=k时成立...

吉首市13269574990: 求C汉诺塔递归过程详解 -
韶虏西咪: 解决汉诺塔的基本思想是先把n个盘子除了最下面的盘子以外的所有盘子从第一根柱子(初始柱子)移动到中间那个柱子上(辅助柱子),然后把最下面的盘子移动到最后一根柱子上(目标柱子).最后把剩下的盘子移动到目标柱子上.这样,...

吉首市13269574990: 汉诺塔问题 -
韶虏西咪: 汉诺塔问题是典型的递归问题,解题的关键就是将这个问题逐步进行分解,直到最后剩1个盘子的时候一步完成.基本上,汉诺塔可以可以用下面的方式实现:void move(char x, char y) {cout"} void hanoi(int n,char one,char two,char three) {if (n ...

吉首市13269574990: 汉诺塔的八珠解法 -
韶虏西咪: 汉诺塔(又称河内塔)问题是印度的一个古老的传说.开天辟地的神勃拉玛在一个庙里留下了三根金刚石的棒,第一根上面套着64个圆的金片,最大的一个在底下,其余一个比一个小,依次叠上去,庙里的众僧不倦地把它们一个个地从这根棒搬...

吉首市13269574990: 递归 汉诺塔有些问题只能用递归来解决.一个典型的例子就是汉诺塔问题.问题的提法是:“传说婆罗门庙里有一个塔台,台上有3根标号为A,B,C的用钻石... -
韶虏西咪:[答案] void hanoi ( int n, char a, char b, char c ) { if ( n >= 1 ) { hanoi ( n-1, a, c, b ) ; printf(“%c --> %c\n”, a , c) ; hanoi ( n-1, b, a, c ) ; ...

你可能想看的相关专题

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网