Gyakorlati alapok II.

Rekurzió

 

Hanoi tornyai

 

Hanoi tornyai egy érdekes elmejáték:

www.informatika-programozas.hu - Hanoi tornyai

Adott 3 db rúd, a középső rúd csak segédeszközként szolgál ahhoz, hogy az egyik szélső rúdról a gúlába rakott korongokat átmozgassuk a másik szélső rúdra. Kikötések:

www.informatika-programozas.hu - Hanoi tornyai

Forrás - Source: Wikipédia

 

Ilyesféle feladvány zabolátlan matematikai megoldások özönét szokta indukálni. Programozási szempontból a Hanoi tornyai tipikus rekurziós művelet, mert műveleti megoldása kisebb, jól szegmentálható, iteráló egységekre bontható.

 

Nézzük meg 3 korongos, rekurzív megoldásának futtatható Java-kódját (Forrás - Source: https://www.tutorialspoint.com/javaexamples/method_tower.htm):

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {

public static void rekurzio(int szam, String kezdoRud, String kozepsoRud, String celRud) {
    if (szam == 1) {
        System.out.println("Korong 1 " + kezdoRud + "tól " + celRud + "ig");
    }
    else {
        rekurzio(szam - 1, kezdoRud, celRud, kozepsoRud);
        System.out.println("Korong " + szam + " " + kezdoRud + "tól " + celRud + "ig");
        rekurzio(szam - 1, kozepsoRud, kezdoRud, celRud);
    }
}


public static void main(String[] args) {
    int korongokSzama = 3;
    rekurzio(korongokSzama, "kezdő rúd", "középső rúd", "célrúd");
    }
}

 

Végeredmény:

Korong 1 kezdő rúdtól célrúdig
Korong 2 kezdő rúdtól középső rúdig
Korong 1 célrúdtól középső rúdig
Korong 3 kezdő rúdtól célrúdig
Korong 1 középső rúdtól kezdő rúdig
Korong 2 középső rúdtól célrúdig
Korong 1 kezdő rúdtól célrúdig

 

www.informatika-programozas.hu - Házi feladat

 

Házi feladat - Írjuk át a rudak elnevezéseit A-B-C betűkre!

 

A megoldás fejezete a képre kattintva érhető el.