JAVA递归实现汉诺塔

过程:我们假设有a柱里有三个圆盘由小到大编号为1,2,3,需要将a柱里的三个圆盘移到c柱上,用数学过程很简单:如下图::

在这里插入图片描述
但是这样只限于圆盘少的数量,这是我们只需要引入递归来完成即可,我们如果想求n个圆盘如何放到c
,只需要将(n-1)个圆盘由a借助c放到b中,这样a里只剩一个圆盘也就是n,然后将n由a放入c中即可,接下来再把b柱子中的(n-1)个圆盘由b借助a放到c即可完成

如下图:
在这里插入图片描述
在这里插入图片描述
以下就是代码:

package 汉诺塔;
/**
 * 汉诺塔
 * @author 
 *
 */
public class HanNuoTa {
	
	public static void Show(int n,String A,String B,String C) {
		if(n==1) {
			System.out.println("将"+n+"由"+A+"放到了"+C);
		}else {
			Show(n-1,A,C,B);
			System.out.println("将"+n+"由"+A+"放到了"+C);
			Show(n-1,B,A,C);		
		}
	}
	public static void main(String[] args) {
		String A = "a";
		String B = "b";
		String C = "c";
		Show(3,A,B,C);
	}
}

这只是三个圆盘汉诺塔,以下是结果:

1由a放到了c
将2由a放到了b
将1由c放到了b
将3由a放到了c
将1由b放到了a
将2由b放到了c
将1由a放到了c

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值