Java汉诺塔代码(递归)

前言:汉诺塔为递归中的经典题目,所以应该都要学会吧。(我目前还是懵逼的)。
然后看了知乎上很多大佬的文章,好像大概也许可能懂了一些。

如何理解汉诺塔的递归? - Shelley Lee的回答 - 知乎


直接上图上代码吧,我也不太懂,反正我现在背住了呲牙


以下是我的一些小小的理解,各位可以先看我上面放的那个文章链接,我就是通过那个文章理解的。


汉诺塔图解

public class 汉诺塔 {
	/**
	 * 总共n层
	 * 1.1~(n-1)层 从 form 到 to ,helper为辅助
	 * 2.第n层到从form 到 to
	 * 3.然后 1~(n-1)层回到 最左边(helper),然后到最右边(form)----如图所示
	 * 4.
	 * */
	public static void main(String[] args) {
		Hanoi(3, "A", "B", "C");
	}
	//Hanoi是将 将n层从from 移动到 to						       A          B            C
	public static void Hanoi(int n,String from,String to ,String helper) {
		if ( n==1 ) {
			move(n, from, to);
			return;
		}
		//如图所示,Hanoi的参数可以理解为ABC下面对应的顺序
		Hanoi(n-1, from, helper, to);
		move(n, from, to);
		Hanoi(n-1, helper, to, from);
	}
	public static void move(int n,String from,String to) {
		System.out.println("移动 "+ n +" 从 "+ from + " 到 " + to);
	}
}

如果有更好的理解方式,欢迎大佬们在评论区留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值