再帰的呼び出し(ハノータ実現)
本論文の出典:http://blog.csdn.net/dt235201314/article/details/50950587
コードの実装:
コードの実装:
import java.io.IOException;
import java.io.InputStreamReader;
public class HuoNuoTa {
/**
* <pre>
* : A:3 B: C: ,
* A B C, ,
*
* 3 : 7 ,1:A--C,2:A--B,3:C--B,4:A--C,5:B--A,6:B--C,7:A--C
* </pre>
*
* @param args
*/
//
static int c = 0;
public static void main(String[] args) throws IOException {
//
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println(" :");
//
int n = Integer.valueOf(br.readLine());
// A、B、C
char A = 'A';
char B = 'B';
char C = 'C';
//
hanNuoTa(n, A, B, C);
}
public static void hanNuoTa(int n, char A, char B, char C) {
//
if (n == 1) {
// A--C
System.out.println(++c + " , " + n + " " + A + " " + C);
} else {
// , A n-1 C B
hanNuoTa(n - 1, A, C, B);
System.out.println(++c + " , " + n + " " + A + " " + C);
// B n-1 A C
hanNuoTa(n - 1, B, A, C);
}
}
}