第二周项目3—汉诺塔程序(2)
2015-09-10 15:24
225 查看
问题:
/* *Copyright (c)2015,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:xmu2.cbp *作 者:李艺 *完成日期:2015年9月10日 *版 本 号:v1.0 * *问题描述: 用递归算法求解汉诺塔问题,其复杂度可以求得为O(2 n ) ,是指数级的算法。 请到课程主页下载程序运行一下,体验盘子数discCount为4、8、16、20、24时 在时间耗费上的差异,你能忍受多大的discCount。 *输入描述:盘子数 *程序输出:移动这些盘子的次数 */ #include <stdio.h> #define discCount 4 long move(int, char, char,char); int main() { long count; count=move(discCount,'A','B','C'); printf("%d个盘子需要移动%ld次\n", discCount, count); return 0; } long move(int n, char A, char B,char C) { long c1,c2; if(n==1) return 1; else { c1=move(n-1,A,C,B); c2=move(n-1,B,A,C); return c1+c2+1; } }
移动四个盘子的运行结果:
移动十六个盘子的运行结果:
移动二十四个盘子的结果:
总结:
随着盘子的增多,时间也在增加。递归算法在合适的场合有很多的优点,但也有缺点,如果递归深度太大,可能系统撑不住,所以我们要合理的应用。
相关文章推荐
- 编写UEFI标准应用程序工程模块小结
- Virtualbox中Linux添加一个新磁盘
- javascript函数
- Android-query使用(2)
- 文字显示位置随着进度变化
- 依赖注入及AOP简述(二)——工厂和ServiceLocator
- 常用Maven插件介绍
- nginx 绑定域名(centos linux)
- js动态修改select和checkbox
- app 上架前的打包准备
- Combine Two Tables
- 【Vegas原创】EXCEL光标所在的行自动变色
- Mangos源码分析(12):服务器公共组件实现之事件与信号
- 无公网IP通过跳板机实现访问公网的方案
- Android之layout属性介绍
- mac maven install
- checkBox复选框
- BST(二叉搜索树) Java 实现解析
- Windows移动开发(一)——登堂入室
- 千万级数据分页存储过程 asp.net页面调用分页全过程