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.