递归 -- 汉诺塔

java数据结构和算法中文第二版

 

TowerApp.java 

package com.ch6.tower;

public class TowerApp {

	private static int nDisks = 3 ;
	
	public static void doTowers(int topN , char from , char inter, char to){
		if (1 == topN){
			System.out.println("Disk 1 from 【" + from + "】 to 【" + to + "】"  ) ;
		}else{
			doTowers(topN -1, from, to, inter) ;
			System.out.println( topN + " is returned . 1 ") ;
			System.out.println("Disk " + topN + " from 【" + from + "】 to 【" + to + "】");
			doTowers(topN -1, inter, from , to) ;
			System.out.println( topN + " is returned . 2 ") ;
		}
	}
	/**
	 * @param args
	 */
	public static void main(String[] args) {

		doTowers(nDisks, 'A', 'B', 'C') ;
	}

}



运行结构

//以下是topN = 3的 doTowers(topN -1, from, to, inter) ;执行结果

Disk 1 from 【A】 to 【C】
2 is returned . 1
Disk 2 from 【A】 to 【B】
Disk 1 from 【C】 to 【B】
2 is returned . 2
3 is returned . 1
Disk 3 from 【A】 to 【C】

//以下是topN = 3的 doTowers(topN -1, inter, from , to) ;执行结果
Disk 1 from 【B】 to 【A】
2 is returned . 1
Disk 2 from 【B】 to 【C】
Disk 1 from 【A】 to 【C】
2 is returned . 2
3 is returned . 2

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值