当前位置: 首页 > news >正文

四川省建设厅官方网站信息查询seo关键词推广公司

四川省建设厅官方网站信息查询,seo关键词推广公司,网站cms,延吉哪家网站建设公司好汉诺塔 汉诺塔(Tower of Hanoi)(河内塔):把圆盘从下面开始按大小顺序重新摆放到另一根柱子上,并且小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘。 汉诺塔规则 disk表示圆盘数一次只…

 汉诺塔

汉诺塔(Tower of Hanoi)(河内塔):把圆盘从下面开始按大小顺序重新摆放到另一根柱子上,并且小圆盘上不能放大圆盘,在三根柱子之间一次只能移动一个圆盘


  汉诺塔规则

  •  disk表示圆盘数
  • 一次只能移动一个圆盘
  • 小圆盘只能在大圆盘的上方
  • A 、B 、C分别表示圆柱
  • A为起始圆柱、B为中转圆柱、C为终止圆柱

disk = 1 时:

移动次数为:2^1 - 1

只需要将绿色圆盘 A->C 直接移过去;

A->C


disk = 2 时:

移动次数为:2^2 - 1,一次只能移动一个圆盘

  1. 黄色圆盘 A->B
  2. 绿色圆盘 A->C
  3. 黄色圆盘B->C

A->B  A->C  B->C


disk = 3 时:

移动次数为:2^3 - 1,一次只能移动一个圆盘

  1. 粉色圆盘A->C
  2. 黄色圆盘A->B
  3. 粉色圆盘C->B
  4. 绿色圆盘A->C
  5. 粉色圆盘B->A
  6. 黄色圆盘B->C
  7. 粉色圆盘A->C

A->C  A->B  C->B  A->C  B->A  B->C  A->C


递归分析

  1. 先看desk = 3 个圆盘时,我们是先将圆柱A上面的2个圆盘(3 - 1),借助圆柱C最终移动到圆柱B上;
  2. 此时圆柱A上就只剩1个圆盘,就可以直接将圆盘从圆柱A移动到圆柱C;


  1. desk = 2个圆盘,先将圆柱B上面的那1个圆盘(2 - 1),最终直接从圆柱B移动到圆柱A上;
  2. 此时圆柱B上就只剩1个圆盘,就可以直接从圆柱B移动到圆柱C上;


  1. 只剩最后1个圆盘了,则是直接从圆柱A上移动到圆柱C上;


 disk = n 时:

移动次数为:2^n - 1,一次只能移动一个圆盘

错误递归分析

  1.  当desk = n个圆盘时,需要将圆柱A上面的n-1个圆盘,借助圆柱C最终移动到圆柱B上;
  2. 此时圆柱A上就只剩1个圆盘,则直接从圆柱A移动到圆柱C;

  1.  desk = n 时,先将圆柱B上面的n-1个圆盘,借助圆柱C最终移到圆柱A上;
  2. 此时圆柱A上有n-1个圆盘,递归以上步骤;


  1. 当 desk = n-1时,需要将圆柱A上面的(n-1) - 1个圆盘,借助圆柱C移到圆柱B上(这里已经在开始和desk = n 的情况一样);
  2. 此时圆柱A上就只剩1个圆盘,则直接从圆柱A移动到圆柱C;

  1. desk = n-1时,先将圆柱B上面的(n-1) - 1个圆盘,借助圆柱C最终移到圆柱A上;
  2. 此时圆柱A上有(n-1) - 1个圆盘,递归以上步骤;


错误代码分析

public class TowerOfHanoi {public static void hanoi(int n, char posA, char posB, char posC) {// hanoi(圆盘个数,参数1,参数2,参数3)// 参数1表示起始位置、参数2表示中转位置、参数3表示终止位置if(n == 1) {move(posA, posC);return; // 递归一定要return}// 这一步就是将 圆柱A 上的 n-1个 圆盘// 借助圆柱C 移动到 圆柱B上hanoi(n-1, posA, posC, posB);// 将圆柱A上剩下的一个移到圆柱C上move(posA, posC);// 将 圆柱B 上的所有圆盘 借助圆柱C 移到圆柱A上hanoi(n-1, posB, posC, posA); // 这里是错的}public static void move(char pos1, char pos2) {System.out.println(pos1 + "->" + pos2);}public static void main(String[] args) {hanoi(3, 'A', 'B', 'C');}
}

 正确递归分析

  1.  当desk = n个圆盘时,需要将圆柱A上面的n-1个圆盘,借助圆柱C最终移动到圆柱B上;
  2. 此时圆柱A上就只剩1个圆盘,则直接从圆柱A移动到圆柱C;
  3. 圆柱B上的n-1个圆盘,借助圆柱A最终移动到圆柱C上;
  4. 此时圆柱B上就只剩一个圆盘,则直接从圆柱B移动到圆柱C;

 


正确代码分析

public class TowerOfHanoi {public static void hanoi(int n, char posA, char posB, char posC) {// hanoi(圆盘个数,参数1,参数2,参数3)// 参数1表示起始位置、参数2表示中转位置、参数3表示终止位置if(n == 1) {move(posA, posC);return; // 递归一定要return}// 这一步就是将 圆柱A 上的 n-1个 圆盘// 借助圆柱C 移动到 圆柱B上hanoi(n-1, posA, posC, posB);// 将圆柱A上剩下的一个移到圆柱C上move(posA, posC);hanoi(n-1, posB, posA, posC);}public static void move(char pos1, char pos2) {System.out.println(pos1 + "->" + pos2);}public static void main(String[] args) {hanoi(3, 'A', 'B', 'C');}
}
http://www.fp688.cn/news/156357.html

相关文章:

  • 禁止wordpress自动更新凯里seo排名优化
  • 建设官方网站查询百度推广开户2400
  • 网站首页做的好看长沙网红打卡地
  • 三河网站建设公司优化设计高中
  • 站长号北京seo诊断
  • 中国建设网站齐齐哈尔市百度百科推广费用
  • 江西网站建设找哪家漳州seo建站
  • 网站引导页动态效果怎么做的百度竞价seo排名
  • 哈尔滨网站建设流程交换免费连接
  • 惠州网站建设方案报价烟台seo关键词排名
  • 建筑公司标志logo设计郑州做网络优化的公司
  • 网站开发费用如何账务处理seo结算系统
  • 山东省住房和城乡建设部网站北京互联网公司排名
  • 批量做单页网站百度推广的步骤
  • 做网站多少钱西宁君博正规培训课程开发
  • 做企业网站用php网站推广的基本方法
  • 做网站1核1g服务器够吗信阳seo推广
  • 招聘网最新招聘优化网站排名
  • 平面设计网站模板搜狗关键词优化软件
  • 百度在线做网站下载百度免费
  • 网站建设的困难南宁seo多少钱报价
  • 中国商标网商标查询官方网站网络营销有哪些手段
  • 广州市网站建设在哪里武汉seo首页优化技巧
  • 尚云网站建设免费自助建站
  • 学校网站的平台用途及建设规划什么是网络营销推广
  • 做网站的语创建网址快捷方式
  • wordpress时间热狗seo优化外包
  • wordpress编辑器不行北京seo优化外包
  • java接单做任务的网站今日新闻最新事件
  • 青岛做物流网站台州百度推广优化