递归问题:二汉诺塔
来源:互联网 发布:python 功能测试 编辑:程序博客网 时间:2024/05/21 06:18
汉诺塔问题是法国数学家Edouard Lucas于1880年提出的。它已经成为计算机科学家的热门话题,因为该问题的解决方案极好的展示了递归的简洁性。该问题包含三个珠子和一些带有中孔的圆盘,这些圆盘可以在柱子间移动,每个圆盘具有不同的直径。刚开始时,所有圆盘按照尺寸对方在一个柱子上,即最大的圆盘放置在底部,我们可以使用另外一个柱子作为放置圆盘的临时位置,但是必须遵循以下3条规则:1一次只能移动一个圆盘 2不能将大圆盘放置在小圆盘的顶部 3除正在柱子间移动的圆盘外,其他所有圆盘都必须放置在某个柱子上。
package com.chingcloud.test01;
public class TowersOfHanoi {
private int totalDisks ;
public TowersOfHanoi(int disks){
totalDisks = disks ;
}
public void solve(){
moveTower(totalDisks,1,3,2) ;
}
private void moveTower(int numDisks,int start,int end,int temp){
if(numDisks == 1){
moveOneDisk(start,end) ;
}else{
moveTower(numDisks-1,start,temp,end) ;
moveOneDisk(start,end) ;
moveTower(numDisks-1,temp,end,start) ;
}
}
private void moveOneDisk(int start,int end){
System.out.println("Move one disk from " + start + " to " + end);
}
public static void main(String[] args) {
TowersOfHanoi t = new TowersOfHanoi(4) ;
t.solve() ;
}
}
- 递归问题:二汉诺塔
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题
- 递归问题,汉诺塔问题
- 递归的问题
- 递归求排列问题
- 递归的问题
- 递归算法 背包问题
- 背包问题(递归)
- PHP非常实用的9段代码
- 常用 Web Service
- UVa 331 - Mapping the Swaps
- Android-屏蔽掉Layout里面子元素,由Layout来响应点击事件
- js 日历控件日期多选 kalendae.js
- 递归问题:二汉诺塔
- 一个故事
- mysql的一些特殊命令
- StringBuilder与StringBuffer的区别(转)
- linux下建立逻辑卷命令
- 李彦宏建议用互联网方法重做传统产业
- 真不敢相信
- hdu 1180 BFS
- 一个故事