递归实现汉诺塔问题
来源:互联网 发布:阿里备案域名交易 编辑:程序博客网 时间:2024/05/19 12:14
递归的思想是将一个大的复杂的问题分成小的问题来解决,而要求是小的问题与大的问题有相似的解法,并且问题的规模越来越小,并且必须存在递归出口。
下面就用代码完成汉诺塔问题:
#include<iostream>using namespace std;void Move(char src,char dest){ cout<<src<<" -> "<<dest<<endl;}void Hanoi(int n,char src,char mid,char dest){ if(1 == n) Move(src,dest); else { Hanoi(n-1,src,dest,mid); Move(src,dest); Hanoi(n-1,mid,src,dest); }}void FunTest3(){ cout << "please enter the number of the plates:"; int m; cin >> m; cout << endl << "the result is:" << endl; Hanoi(m, 'A', 'B', 'C');}int main(){ FunTest3(); return 0;}
总结:通过递归实现汉诺塔的例子我们可以看出,在涉及大型而复杂的问题时,递归会使程序在总体上变得简单易于理解,而涉及递归的调用过程时则会比较复杂,当n比较大时想要去了解整个调用过程则会比较麻烦。并且递归调用开销较大,所以递归的使用也要慎重,要根据场合来选择。
0 0
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 递归实现汉诺塔问题
- 汉诺塔问题递归实现
- 汉诺塔问题--递归实现
- 递归实现汉诺塔问题
- 递归和非递归实现汉诺塔问题
- 汉诺塔问题的递归实现
- 汉诺塔问题的递归实现
- Java 递归实现汉诺塔问题
- 汉诺塔问题的递归实现
- 汉诺塔问题(递归实现)
- java 递归实现汉诺塔问题
- 经典汉诺塔问题:分别用递归和非递归实现
- 汉诺塔、反向输出问题--利用递归实现
- 汉诺塔问题C++的递归实现 [
- 汉诺塔问题的递归实现(扩展)
- JSP编写规范
- 2017.04.21起每日完成
- javaday47_IO流_转换流的规律,指定编码表
- 5.网络层(3)---路由选择协议
- 项目中使用的git工作流
- 递归实现汉诺塔问题
- unreal
- 二十七、配置元数据
- 单例模式PDO
- 搞事课堂 C++格式化硬盘
- test
- 批处理简单快捷方法
- POJ 1827 A Bunch Of Monsters 题解
- Android柱形图 绘制