什么是汉诺塔塔问题是一类经典嘚编程问题主要使用了递归的思想。递归:最重要的有两个方面:第一个是基例(即终止条件)第二个是递归链条(即n和n-1的关系),呮要找准了这两个方面那么问题便迎刃而解!
现在有n个圆盘,代号为A,B,C的三根柱子要求将圆盘从A全部搬到C柱子上。假设n=3
算法来源:《图解算法》
根据规律来提取出算法为了讨论方便,把三根柱子编号0-2,0为起始柱子:
//判断输入的盘子个数是奇数还是偶数 //求出需要搬动盘子的最大值 //根据规律求出当前步数需要挪动那个盘子
什么是汉诺塔塔问题是一类经典嘚编程问题主要使用了递归的思想。递归:最重要的有两个方面:第一个是基例(即终止条件)第二个是递归链条(即n和n-1的关系),呮要找准了这两个方面那么问题便迎刃而解!
现在有n个圆盘,代号为A,B,C的三根柱子要求将圆盘从A全部搬到C柱子上。假设n=3
把A柱子上若干个圆盘(从大到小依次往上)借助柱子B,移动到柱子C上去要求一次只能移动一个圆盘,且大盘子不能放在小盘子上面