Program rekurencyjny

void hanoi (int n, int a, int b) //drazki a,b,c numerujemy 0,1,2,zatem a+b+c=2, { //więc c=2-a-b

if (n==1)

shift (n,a,b); ///przesuniecie n-tego krazku z a na b

else

{

hanoi (n-1,a,3-a-b);

shift (n,a,b);

hanoi(n-1,3-a-b,b);

}

}



wersja zmodyfikowana

void hanoi (int n, int a, int b)

{

while (n>1)

{

hanoi 2 (n-1,a,3-a-b);

shift (n,a,b);

n=n-1;

a=3-a-b;

}

shift (1,a,b);

}