Neem eender welk natuurlijk getal. Als het getal even is, deel het dan door twee; als het oneven is, vermenigvuldig het dan met drie en tel er één bij op. Formeel gesteld: begin bij een getal \(a_1\) en definieer
$$ a_{n+1} = \begin{cases} a_n/2 & \text{als het getal even is,}\\ 3a_n + 1 & \text{als het getal oneven is.} \end{cases} $$
Het vermoeden van Collatz stelt dat het niet uitmaakt wat de beginwaarde \(a_1\) precies is; je zal altijd uitkomen bij \(a_n = 1\) voor een voldoende grote \(n\). Start bijvoorbeeld bij \(a_1 = 12\), dan krijgen we de Collatz-rij
12, 6, 3, 10, 5, 16, 8, 4, 2, 1.
Starten we bij 15, dan krijgen we
15, 46, 23, 70, 35, 106, 53, 160, 80, 40, 20, 10, 5, 16, 8, 4, 2, 1
Merk op dat je in een lus belandt zodra je uitkomt bij 1:
1, 4, 2, 1, 4, 2, 1, ...
Vandaar dat we altijd stoppen als we uitkomen bij 1. Het vermoeden van Collatz is tot op heden een openstaand wiskundig probleem dat nog niemand heeft kunnen bewijzen, maar waar ook nog geen tegenvoorbeelden voor gevonden zijn.
Schrijf een programma dat een getal neemt als invoer en de corresponderende Collatz-rij voor dat getal produceert als uitvoer.
Invoer:
12
Uitvoer:
[12, 6, 3, 10, 5, 16, 8, 4, 2, 1]