相关疑难解决方法(0)

这是如何运作的?河内解决方案奇怪的塔

当我发现河内塔楼的这种不同寻常的迭代解决方案时,我迷失在互联网上:

for (int x = 1; x < (1 << nDisks); x++)
{
     FromPole = (x & x-1) % 3;
     ToPole = ((x | x-1) + 1) % 3;
     moveDisk(FromPole, ToPole);
}
Run Code Online (Sandbox Code Playgroud)

这篇文章在其中一个答案中也有类似的Delphi代码.

然而,对于我的生活,我似乎无法找到一个很好的解释为什么这个工作.

任何人都可以帮我理解吗?

language-agnostic algorithm bit-manipulation towers-of-hanoi

50
推荐指数
2
解决办法
7260
查看次数