漢諾塔(遞歸實現)

package hannota;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import zhuanghuan.Demo01;

public class Hannota {
//orign:表示原始塔,destination:表示目的塔,temporary:表示臨時塔,即輔助塔
	private static int count=0;
	public static void move(int m,char orign,char destination,char temporary)    //操作漢諾塔
	{
		if(m<0)
			throw new RuntimeException();
		if(m==1)
		{
			System.out.println("move disk 1 from"+ orign +"to"+ destination);
			count++;
		}
		else
		{
			move(m-1,orign,temporary,destination);
			System.out.println("move disk " +m + "from" +orign + "to"+ destination);
			move(m-1,temporary,destination,orign);    //使用得問題又回到原始問題,只不過規模逐漸減少而已
			count++;
		}
	}
	public static void main(String[] args)
	{
		InputStreamReader input=new InputStreamReader(System.in);
		BufferedReader reader=new BufferedReader(input);
		String ss=null;
		int aa=0;
		System.out.println("請輸入一個十進制數:");
		try
		{
			ss=reader.readLine();
			aa=Integer.parseInt(ss);
		}
		catch(Exception ex)
		{
			System.out.println(ex.toString());
		}
		Hannota.move(aa, 'A','B','C');
		System.out.println("總共移動的次數爲:"+Hannota.count);
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章