Dla porównania: od Wielkiego Wybuchu minęło około 14 mld lat.
Algorytm thumb|300px|Od lewej: słupek A z całą wieżą, pusty słupek B pełniący rolę bufora i pusty słupek docelowy C Wieże Hanoi można łatwo rozwiązać za pomocą prostego algorytmu rekurencyjnego lub iteracyjnego. Oznaczmy kolejne słupki literami A, B i C. Niech będzie liczbą krążków, które chcemy przenieść ze słupka A na słupek C posługując się słupkiem B jako buforem.
Rozwiązanie rekurencyjne Algorytm rekurencyjny składa się z następujących kroków: przenieś (rekurencyjnie) krążków ze słupka A na słupek B posługując się słupkiem C, przenieś jeden krążek ze słupka A na słupek C, przenieś (rekurencyjnie) krążków ze słupka B na słupek C posługując się słupkiem A
Przykładowe implementacje w Pythonie: def hanoi(n:int, A:list, B:list, C:list): """słupki A, B, C są listami""" if n > 0: hanoi(n-1, A, C, B) C.insert(0, A.pop(0)) hanoi(n-1, B, A, C)
w Elixirze: defmodule Hanoi do # Jeśli brak krążków -> wszystko ok, nic nie trzeba robić def hanoi(0, _, _, _), do: :ok
# Jeśli jeden krążek -> przełożyć na docelowy słupek def hanoi(1, a, _, c) do IO.puts "#{a}->#{c}" end
# Więcej niż jeden -> rozwiąż rekurencyjnie def hanoi(n, a, b, c) do hanoi(n-1, a, c, b) hanoi(1, a, b, c) hanoi(n-1, b, a, c) end end