这是来自的后续问题
Tower of Hanoi: Recursive Algorithm

该算法的基本原理得到了很好的解释。

但是,我对此算法的实现略有不同,对此我不太了解(代码来自大学的演讲,因此无法链接到任何源):

// 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'来自何方,有人可以解释吗?

最佳答案

6 - a - b来自(1 + 2 + 3)= 6,并为您提供“另一个”钉的索引:

a = 1, b = 3




6 - a - b = 2

关于java - 汉诺塔:递归算法使用神秘的硬编码常数6,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32442025/

10-12 06:30