java 漢諾塔 遞歸算法

1、玩法java

  1.有三根杆子A,B,C。A杆上有若干碟子  
  2.每次移動一塊碟子,小的只能疊在大的上面  
  3.把全部碟子從A杆所有移到C杆上ide

2、解答思路 spa

這是一個典型的遞歸場景的應用code

 1 // n- 要移動的碟數 
 2 // a- 移動杆,b- 藉助杆,c- 目標杆
 3 public static hanoi(int n,String a ,String b,String c) {
 4       if(n == 1) {
 5             System.out.println(a + "--->" + c);
 6       } else {
 7             hanoi(n-1,a,c,b);
 8             System.out.println(a + "--->" + c);
 9             hanoi(n-1,b,a,c);
10       }    
11 }
View Code

一、若A杆上只有一個碟子,直接移動到Cblog

if(n==1) {
    System.out.println(a + '--->' + c);      
}

二、若A杆上碟子數爲n(n>1),分「三步走」遞歸

  2.一、將A杆上n-1個碟子藉助C移動到Bevent

hanoi(n-1,a,c,b)

  2.二、將A杆上最後一個移動到Cclass

System.out.println(a + "--->" + c)

  2.三、將B杆上的n-1個碟藉助A移動到Ccli

hanoi(n-1,b,a,c)
相關文章
相關標籤/搜索