重複の可能性:
これはどのように機能しますか? ハノイ ソリューションの奇妙な塔
Google をサーフィンしているときに、スタックをデータ構造としても使用しないハノイの塔に対するこの興味深いソリューションを見つけました。
誰かが私を簡単に説明できますか、それは実際に何をしているのですか?
この解決策は本当に受け入れられますか?
コード
#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 は何をしているのですか?