Ez a program a hanoi tornyok problémájának megoldását mutatja be. A probléma lényegében nagyon egyszerü. Van 3 oszlopunk. Az egyiken vannak különböző nagyságú gyürük. A gyürük nagyság szerint rendezve vannak, felfele csökennek. A feladat: a kupac átpakolása a másik oszlopra, úgy hogy egyszerre csak egyet rakhatunk át és egy gyürüt csak nála nagyobb gyürüre lehet rakni. A feladat megoldása egy legendához köthető: Valamelyik kolostorban a helyi szerzetes szintén ezt a feladatot kapta méghozzá 100 gyürüvel. A szerzetes kidolgozta a megoldást. A feladatot 3 részfeladatra bontotta le: 1, Tegyünk át 99-et a c oszlopra. 2, Tegyük át a maradék egyet a b oszlopra. 3, C oszlopról tegyük át 99-et a b oszlopra. Ezután belátta, hogy a legegyszerübb lépés a kettes. Úgyhogy ő megcsinálja azt, a többit majd kiosztja a tanítványai között. Tehát a feladat megoldása igy nézett ki. I, Add ki feladatnak n-1 gyűrű átrakását a-ról c-re. II, Tedd át a maradék 1 a-ról b-re. III, Add ki feladanak n-1 gyűrű átrakását c-ről b-re. Lehet látni hogyha az I.-t megcsináljuk akkor már a III-as sem gond. Tehát kövessük a szerzetes megoldását és alkalmazzuk az 1. pontra. Pl. Ha 100 gyürünk van az egyes pont szerint 99 gyürüt át kell rakni a-rol c-re. Hogyan rakjunk át 99-et a másik toronyra? A főszerzetes szerint így: 1, Add ki feladatnak n-1 gyürű átrakását a-ról c-re. 2, Tedd át a maradék 1 a-ról b-re. 3, Add ki feladanak n-1 gyürű átrakását c-ről b-re. Tehát csak át kell adni a feladatot valakinek, hogy 98-at rakjon át és akkor már menni is fog. Innen már lehet látni hogy III. feladat teljesitése is hasonlóan megy . Tehát az algoritmus így néz ki: eljárás hanoi(n: egész; a,b,c:karakter) //n a korongok száma ha n>0 akkor hanoi(n-1,a,c,b) ki: a,b hanoi(n-1,c,b,a) elágazás vége eljárás vége A végső megoldásba beleraktam egy magasság kiszámolót is ezért kicsit hosszabb a kód, de lényegében ugyanezt csinálja. Bandi