Hanoi问题——解惑自己
来源:互联网 发布:释放内存软件 编辑:程序博客网 时间:2024/06/02 02:29
从第一个学期开始就有遇到汉诺塔的问题,但只是为了完成作业所以上网随便抄了一些代码而已,并没有真正理解。
今天又一次遇到了这个问题…想着还是解决一下比较好。
参考了这篇文章:参考文章
(作者未注明,若侵 删)
递归问题
以前一直认为递归问题很令人头疼,无从下手。但其实今天仔细研究过后发现递归的关键是关注即时问题以及单位问题(自己乱取的名字)。能递归解决的问题基本上能分解成为多个模式相同的单位问题。
例如在Hanoi中将n-1个圆盘放到中间柱上。
代码
这次是用java写的还是贴一下吧。
public static void main(String[] args) {Lab1_4_Hanoi h = new Lab1_4_Hanoi(); //move函数的 功能 即是将4个从A经由B移动到C,不用再追究细节。 h.move(4, 'A', 'B', 'C');}//函数move定义 public void move(int n, char a, char b, char c){ if(n == 1){ System.out.println("把"+n+"从"+a+"移动到"+c); } else{ //此处调用,目的是将n-1个从A经由C移动到B(中间柱),无需追究细节 move(n-1, a, c, b); System.out.println("把"+n+"从"+a+"移动到"+c); //再将n-1个从中间柱上挪到目标柱上 move(n-1, b, a, c); } }}
我以前一直纠结于为何move(n-1, b, a, c);
这种在递归函数中本身被调用的用途一直令我纠结。但其实只需明白其功能,抓住功能即抓住了要点,这样再追踪细节便容易得多了。
0 0
- Hanoi问题——解惑自己
- 初试——Hanoi塔问题
- 递归——Hanoi塔问题
- 算法分析——Hanoi塔问题
- 算法分析——Hanoi塔问题
- 简单递归—Hanoi(汉诺塔问题)
- hanoi塔问题—函数的递归调用
- Hanoi 问题
- hanoi问题
- Hanoi问题
- Hanoi问题
- hanoi问题
- hanoi问题
- Hanoi问题
- Hanoi问题
- hanoi问题
- Hanoi问题
- Hanoi 问题
- Java中String类通过new创建和直接赋值字符串的区别
- ACdream1726-A Math game
- 笔试题--求幸运数个数
- ios应用生命周期和视图生命周期
- android中的style部分属性值介绍
- Hanoi问题——解惑自己
- samba 配置与安装
- 哈希表
- WebView相关总结
- Content-disposition
- java复习
- (LeetCode)Swap Nodes in Pairs --- 交换两个相邻的结点
- Fragment和Activity交互,Fragment回调
- 高可用,高性能,线程安全,自动数据恢复 redo log 类