当我发现河内塔楼的这种不同寻常的迭代解决方案时,我迷失在互联网上:
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