/* 
 
 * copyright (c) 2016,烟台大学计算机学院 
 
 * All rights reserved. 
 
 * 文件名称:1.cpp 
 
 * 作者:杨俊杰
 * 完成日期:2016年9月22日 
 
 * 版本号:v1.0 
 
 * 问题描述:用递归算法求解汉诺塔问题,其复杂度可以求得为O(2^n) ,是指数级的算法。请到课程主页下载程序运行一下,体验盘子数discCount为4、8、16、20、24时在时间耗费上的差异,你能忍受多大的discCount。 
 
 * 输入描述:无(盘子数已定义) 
 
 * 程序输出:盘子需要移动的次数

*/

[cpp] view plaincopy
  1. #include <stdio.h>
  2. #define discCount 1               //数值可改动
  3. long move(int, char, char,char);
  4. int main()
  5. {
  6. long count;
  7. count=move(discCount,'A','B','C');
  8. printf("%d个盘子需要移动%ld次\n", discCount, count);
  9. return 0;
  10. }
  11. long move(int n, char A, char B,char C)
  12. {
  13. long c1,c2;
  14. if(n==1)
  15. return 1;
  16. else
  17. {
  18. c1=move(n-1,A,C,B);
  19. c2=move(n-1,B,A,C);
  20. return c1+c2+1;
  21. }
  22. }

运行结果:

知识点总结:

算法复杂度。

心得体会:

随着的盘子数的增大,需要移动的次数增大,在时间上的耗费逐渐增大;巩固了递归算法,加深了对算法复杂度的理解,为今后的算法学习有了更深的铺垫。

项目三-体验复杂度(2)汉诺塔相关推荐

  1. 三十三、分治算法---汉诺塔问题

    一.分治算法的介绍 分治法是一种很重要的算法.字面上的解释是"分而治之",就是把一个复杂的问题分成两个或更多的相同或 相似的子问题,再把子问题分成更小的子问题--直到最后子问题可以 ...

  2. C语言编程求解圆盘的汉诺塔,课内资源 - 基于80x86汇编的汉诺塔

    一.软件背景介绍 我们今天要陈述的应用叫做汉诺塔,大家可能小时候都接触过类似于鲁班锁,九连环的益智玩具,我们要说的汉诺塔其实也可以说是益智玩具的一种. 下面我们具体介绍一下汉诺塔.汉诺塔有三根杆子A, ...

  3. 汉诺塔问题详解 递归实现 C语言

    目录 一.前言 二.游戏规则 三.思路讲解 四.完整代码 五.最终结果展示 一.前言 汉诺塔:汉诺塔(Tower of Hanoi)源于印度传说中,大梵天创造世界时造了三根金钢石柱子,  其中一根柱子 ...

  4. python 利用递归算法来完成计算乘阶、斐波那契数列、汉诺塔

    一.求一个整数的阶乘: 1.常用的迭代方法写法: def jc(n):result = nfor i in range(1, n):result *= ireturn resultnu = int(i ...

  5. 堆栈思想案例—汉诺塔问题求解最小步数

    文章目录 前言 一.何为汉诺塔 二.问题分析 三.算法实现 前言 汉诺塔是一款有趣的智力游戏,其求解问题在数据结构与算法中也是堆栈思想和递归思想的典型案例. 一.何为汉诺塔 如图所示:有A.B.C三个 ...

  6. 算法 - 递归实现汉诺塔(The Tower of Hanoi)

    目录 引言: 分析: 分析两片汉诺塔的迁移过程: 分析三片汉诺塔的迁移过程: 代码实现: 递归出口: 递归过程: 完整程序代码: 运行结果: 参考资料:​​​​​ 引言: 今天接触到了一个非常有意思的 ...

  7. C语言实现汉诺塔问题(保姆式讲解)

    前言: 大家好,又是再一次分享文章,我十分感谢各位能够点开这篇花费我颇多时间才解决的汉诺塔问题,接下来我就要分享一下自己的所思所想,希望能给各位带来一些不一样的收获吧. 提醒: 汉诺塔问题的本质是函数 ...

  8. 递归算法 —— Hanoi汉诺塔游戏

    前言 博客主页:干脆面la的主页 gitte链接:干脆面la的gitee仓库 刚学习完递归函数接触汉诺塔问题的时候,汉诺塔问题困扰了我很久.博主花了很长时间理解这道题目,因此整理出了用递归解决汉诺塔问 ...

  9. 第二周 体验复杂度--汉诺塔

    /* *Copyright(c)2014,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test.cpp *作者:杨珺 *完成日期:2015年9月7日 *版本号 ...

最新文章

  1. hal库开启中断关中断_「正点原子NANO STM32开发板资料连载」第十章 外部中断实验...
  2. 一篇文章,带你了解 “机器学习工程师” 必备技能图谱
  3. Atitit.js图表控件总结
  4. IOS经常使用的性能优化策略
  5. 基于JAVA+SpringMVC+Mybatis+MYSQL的仓库管理系统
  6. 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛——B题 小宝的幸运数组
  7. 如何基于链表实现 LRU 缓存淘汰算法?
  8. 随心订制linux透明防火墙
  9. Exception processing template “admin/table“: Could not parse as expression: “(thymeleaf与layui冲突)
  10. android网页自动输入,android浏览器自动填表
  11. Java Caledar类(日历类)判断本周周数
  12. 记一次奇怪的网络问题
  13. 那些选择网络工程的女生们,后来都怎么样了?
  14. Linux放弃到入门
  15. correl函数相关系数大小意义_相关系数越大,说明两个变量之间的关系就越强吗...
  16. ubuntu18.04安装搜狗输入法
  17. 数值分析实验 实验1-1 拉格朗日插值公式 python3实现
  18. 灵活填充健康和可持续食品
  19. 计算机毕业设计springboot+vue+elementUI幼儿园管理系统
  20. 微信迎来史诗级更新,以及两款微信清理工具

热门文章

  1. 黑帽技术联盟heimaoseo:细说黑帽SEO与白帽SEO
  2. “王者荣耀”与大数据平台的产品化思想
  3. 洛谷:P4516 [JSOI2018] 潜入行动(树形dp、树上分组背包统计方案数)
  4. Kubernetes系列教程(二)---集群网络之Flannel核心原理
  5. 休假管理系统——类图文档
  6. 【自我管理】追求卓越从改变自己做起
  7. mysql Access denied for user ‘root’@’%’ to database
  8. Spring入门(二):自动化装配bean
  9. kali下parallels tools的安装
  10. matlab 大数,在Matlab中考虑大数,然后得到结果中的数字