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);
}