再帰的呼び出し(ハノータ実現)


本論文の出典: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);  
        }  
    }  
}