2015-09-07 18 views
0

這是 Tower of Hanoi: Recursive Algorithm漢諾塔:遞歸算法使用神祕的硬編碼常量6

的後續問題,其中該算法的基本原理是很好的解釋。

但是我有一個稍微不同的實現這個算法在這裏,我不完全理解(代碼是從一所大學演講,所以我不能鏈接到任何來源):

// k = nr. of discs, a = start peg, b = destination peg 
public static void hanoi(int k, int a, int b) 
{ 
    if(k > 0) 
    { 
     hanoi(k - 1, a, 6 - a - b); // 1. move (k-1) discs to temporary peg 
     System.out.println("" + k + ": " + a + " => " + b); // 2. move k. disc from a to b 
     hanoi(k - 1, 6 - a - b, b); // 3. move (k-1) discs from temporary peg to peg b 
    } 
} 

原則與其他主題相同(據我瞭解),但我不明白'6-a -b「中的'6'是從哪裏來的,有人可以解釋嗎?

回答

1

6 - a - b來自(1 + 2 + 3)= 6並給出「其他」掛鉤的索引:

a = 1, b = 3 

6 - a - b = 2