递归 -- 汉诺塔

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

你可能感兴趣的:(数据结构,c,算法,String,Class,disk)