I was reflecting on how the Towers of Hanoi problem was important in my development as a programmer --- my Microsoft-Basic-limited idea of "programming" was dramatically expanded when I saw a recursive towers-of-Hanoi program in Pascal that was less than a screenful, and of course really understanding recursion is a real mind-blower.
But in a modern programming language, Hanoi can be even shorter: (* move n discs from a to z (using third peg named x) *) let rec hanoi move n a z x = if n = 0 then () else (hanoi move (n-1) a x z ; move n a z ; hanoi move (n-1) x z a) let printmove disc a b = print_endline ("Move disc " ^ (string_of_int disc) ^ " from " ^ a ^ " to " ^ b) ;; hanoi printmove 4 "peg A" "peg C" "peg B"