Как работает эта итеративная Ханойская башня? C [дубликат]

Возможный дубликат:
Как это работает? Странные Башни Ханойского Решения

Во время серфинга в Google я нашел это интересное решение для Tower Of Hanoi, которое даже не использует стек в качестве структуры данных.

Кто-нибудь может объяснить мне вкратце, что он на самом деле делает?

Это решение действительно приемлемо?

Код

#include <stdio.h>
#include <stdlib.h>

int main()
{
   int n, x;
   printf("How many disks?\n");
   scanf("%d", &n);
   printf("\n");
   for (x=1; x < (1 << n); x++)
      printf("move from tower %i to tower %i.\n",
         (x&x-1)%3, ((x|x-1)+1)%3);
return 0;
}

Обновление: что жестко номер 3 делает здесь?

Ответы на вопрос(2)

Ваш ответ на вопрос