求PYthon大佬详细解答一下什么是汉诺塔塔的非递归实验

算法来源:《图解算法》

根据规律来提取出算法为了讨论方便,把三根柱子编号0-2,0为起始柱子:

//判断输入的盘子个数是奇数还是偶数 //求出需要搬动盘子的最大值 //根据规律求出当前步数需要挪动那个盘子

什么是汉诺塔塔问题是一类经典嘚编程问题主要使用了递归的思想。递归:最重要的有两个方面:第一个是基例(即终止条件)第二个是递归链条(即n和n-1的关系),呮要找准了这两个方面那么问题便迎刃而解!
现在有n个圆盘,代号为A,B,C的三根柱子要求将圆盘从A全部搬到C柱子上。假设n=3

if n == 1:#基例:当柱子仩只有一个圆盘时,应该怎么搬只需要把这一块圆盘搬到目标柱子上便可以完成 hanoi(n-1,src,mid,dst)#如果有n个圆盘的话,现将上面n-1个圆盘从原来的柱子搬到過度的柱子


把A柱子上若干个圆盘(从大到小依次往上)借助柱子B,移动到柱子C上去要求一次只能移动一个圆盘,且大盘子不能放在小盘子上面

我要回帖

更多关于 什么是汉诺塔 的文章

 

随机推荐