用递归算法求解汉诺塔问题
2016-09-08 21:08
253 查看
* *Copyright (c) 2016,烟台大学计算机与控制工程学院 *All rights reserved. *文件名称:test3.1.cpp *作者:姜延锴 *完成日期:2016年09月08日 *版本号:v1.0 *问题描述:用递归算法求解汉诺塔问题,其复杂度可以求得为O(2 n ) ,是指数级的算法 不同盘子所消耗的时间 *输入描述:无 *程序输出:算法的运行时间 */ #include <stdio.h> #define discCount 4 //改变discCount 运行在8,16,20,24下的结果 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; } }
总结
复杂度不同,运行时间不在一个等级。n越大,部分数级改变明显。
相关文章推荐
- 汉诺塔问题递归算法求解
- 用递归算法求解汉诺塔问题
- 递归求解汉诺塔问题
- 汉诺塔问题(Hanoi问题)的递归算法与非递归算法详解
- Java求解汉诺塔问题
- 汉诺塔问题(递归算法)
- to初学者:从汉诺塔问题深入理解递归算法思想
- 用递归方法求解汉诺塔问题
- Java经典编程300例之实例047 汉诺塔问题求解(递归)
- 利用启发式搜索算法求解3阶汉诺塔问题
- 递归算法-汉诺塔问题
- 递归算法1-汉诺塔问题
- java 解决 汉诺塔问题(递归算法)
- 汉诺塔问题的求解
- java中使用递归求解汉诺塔问题
- 递归算法--汉诺塔问题
- 汉诺塔问题求解
- 递归算法之Hanoi(汉诺塔)问题学习
- 汉诺塔问题的求解
- java-汉诺塔问题求解