w C++: #include <iostream> using namespace std;
void hanoi(int n, char A, char B, char C) { // przekłada n krążków z A korzystając z B na C if (n > 0)
hanoi(n-1, A, C, B); cout << A << " -> " << C << endl; hanoi(n-1, B, A, C);
int main(int argc, char *argv[]) { hanoi(3, 'A', 'B', 'C'); return 0; }
w C#: using System;
namespace Hanoi { public class WiezeHanoi
// przekłada n krążków z A, korzystając z B, na C static void Hanoi(int n, char A, char B, char C)
if(n > 0)
Hanoi(n - 1, A, C, B); Console.WriteLine("\t{0} -> {1}", A, C); Hanoi(n - 1, B, A, C);
static void Main()
Console.WriteLine("Wieże Hanoi\n"); Console.WriteLine("Algorytm przełożenia trzech krążków z wieży A na wieżę C z wykorzystaniem wieży B\n"); Hanoi(3, 'A', 'B', 'C'); Console.WriteLine("Naciśnij dowolny klawisz..."); Console.ReadKey();
Algorytm rozwiązywania wież Hanoi jest klasycznym przykładem algorytmu rekurencyjnego używanego w nauczaniu informatyki.
Rozwiązanie iteracyjne Algorytm iteracyjny składa się z następujących kroków: przenieś najmniejszy krążek na kolejny (*) słupek, wykonaj jedyny możliwy do wykonania ruch, nie zmieniając położenia krążka najmniejszego, powtarzaj punkty 1 i 2, aż do odpowiedniego ułożenia wszystkich krążków.