Я потерялся в Интернете, когда обнаружил это необычное, итеративное решение для башен Ханоя:
for (int x = 1; x < (1 << nDisks); x++)
{
FromPole = (x & x-1) % 3;
ToPole = ((x | x-1) + 1) % 3;
moveDisk(FromPole, ToPole);
}
Этот пост также имеет аналогичный код Delphi в одном из ответов.
Однако, для жизни меня, я не могу найти подходящего объяснения, почему это работает.
Может кто-нибудь помочь мне понять это?