用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

Java编写一个汉诺塔的过程

2015-03-24 作者: java源代码大全举报

[java]代码库

/*
 * 需求:用Java编写一个汉诺塔的过程
 * 	         汉若塔问题,就是把A柱子上面从大到小一次叠放的盘子借助B柱移到C柱上去,规则是一次只能移动一个盘子,大盘子不能放到小盘子之上
 * 
 * 思想:采用递归的方法来接
 * 		1. 先将A上面的n-1个盘子,移到B柱上
 * 		2. 然后把A上最大的一个盘子放到C上去
 * 		3. 然后把B上面的n-1个盘子移到A上去
 * 
 * 步骤:
 * 		汉若塔用递归思考首先考虑一种临界状态,把n-1个上面的盘从A—B, 就是把n从A移动到C,最后把n-1个盘从B---C,
 * 		(注意在考虑把n-1个盘从B---C的时候就出现递归调用,如果把A,B盘交换就又重复上面的流程了,最后到n = 1的时候就返回)
 * 
 * 伪代码:
 * 	public void run(int n, char a, char b, char c)
	{
		if(n==1)
		{
			move(n,a,c) //等于1的时候把盘从A移动到C
		}else
		{
			run(n-1,a,b,c);//递归调用把a上面的n-1个盘移动到B上,怎么表示移动?把柱子交换不就是移动了。
			move(n,a,c);
			run(n-1,b,a,c);//意图是把n-1个盘从B移动到A上。
		}
		
	}		
 * 
 */

public class HanoiTower {
	
	public static void moveDish(int level, char from, char inter, char to)
	{
		if(level ==1)
		{
			System.out.println("从 "+from+"移动盘子1号到 "+to);
		}else
		{
			moveDish(level-1,from,to,inter);
			System.out.println("从 "+from+" 移动盘子 "+level+" 号到 "+to);
			moveDish(level-1,inter,from,to);
		}
		
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		int nDisks = 3;
		moveDish(nDisks,'A','B','C');

	}

}
//源代码片段来自云代码http://yuncode.net
			


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...