package onlyDemo;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class Hanio {
public static void main(String args[]) throws IOException {
//輸入盤子數
System.out.println("請輸入盤子數:");
BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
String p=br.readLine();
byte q=Byte.parseByte(p);
//壹***有n個盤子
byte n = q;
// 定義三個桿子的名稱
char a = 'A', b = 'B', c = 'C';
// 調用漢諾塔執行函數
hanio(n, a, b, c);
System.out.println("需要 "+ i +" 次移動");
}
static long i=0;
public static void hanio(byte n, char a, char b, char c) {
if (n == 1) { //如果只有壹個盤子則直接把盤子從a 移到b
System.out.println("move " + a + " to " + b);
i++;
}
else { //超過壹個盤子的情況
hanio( (byte) (n - 1), a, c, b); //將a桿上n-1個盤子借助於b先移到c桿
System.out.println("move " + a + " to " + b); //將a桿上第n個盤子從a移到b桿
i++;
hanio( (byte) (n - 1), c, b, a); //將c桿上n-1個盤子借助a移到b桿
}
}
}