WIEŻE HANOI


Mamy 3 kijki ‘a’, ‘b’ i ‘c’. Na kijku 'a' umieszczone są krążki, o różnej wielkości, tak że największy znajduje się na samym dole, a najmniejszy na górze. Kijki ‘b’ i ‘c’ są puste. Zadanie polega na przemieszczeniu krążków z kijka‘a’ na kijek ‘c’ korzystając z pomocniczego kijka ‘b’, przy czym mniejszy krążek nigdy nie może zostać przykryty większym.

  PASCAL

Procedura HANOI wyświetla numery kijków: z którego, na który należy przełożyć krążek. Wywołanie funkcji: HANOI (1, 2, 3, n) / 1, 2, 3 to numery kijków, n – ilość krążków

 program Hanoi;
 uses crt;
 procedure Hanoi(a,b,c,n :integer);
 begin
   if n=1 then writeln(a,', ',b)
  else
  begin
   Hanoi(a,c,b,n-1);
   writeln(a,', ',b);
   Hanoi(c,b,a,n-1);
  end;
 end;
 {*** PROGRAM GŁÓWNY ***}
 BEGIN
 ClrScr;
  Hanoi(1,2,3,3);
 readln;
 END.

  Wyniki dla 3 kijków: hanoi(1,2,3,3)


  C++

Procedura HANOI wyświetla numery kijków: z którego, na który należy przełożyć krążek. Wywołanie funkcji: HANOI (1, 2, 3, n) / 1, 2, 3 to numery kijków, n – ilość krążków

 #include <iostream>
 using namespace std;
 void Hanoi(int a,int b,int c,int n)
 {
  if (n==1) cout<<a<<" "<<b;
 else
  {
  Hanoi(a,c,b,n-1);
  cout<<a<<" "<<b;
  Hanoi(c,b,a,n-1);
  }
 }
 //*** PROGRAM GŁÓWNY ***
 main()
 {
  Hanoi(1,2,3,3);
 return 0;
 }

  Wyniki dla 3 kijków: hanoi(1,2,3,3)


  PYTHON

Procedura HANOI wyświetla numery kijków: z którego, na który należy przełożyć krążek. Wywołanie funkcji: HANOI (1, 2, 3, n) / 1, 2, 3 to numery kijków, n – ilość krążków

  Wyniki dla 3 kijków: hanoi(1,2,3,3)