Írjuk le az algoritmust lépésekben
· X - kezdeti állapot;
Y közbenső állapot;
· Z a végső állapot. (lásd a fenti ábrát)
1 lépés - az X tengelyből az Y rúdhoz (n-1) helyezzük el a lemezt, a Z rúd segítségével segédszerként;
2 lépés - egy alsó lemez áthelyezése az X rúdról a Z rúdra;
3. lépés - az (Y-1) áthelyezi a lemezt az Y rúdról a Z rúdra, az X szabad rúd segítségével.
4. Így rekurzív eljárásunk van
Hanoi eljárás (n˸ szó, x, y, z˸ char);
majd írj ('Move', x, 'on', z)
A természetes szám tényleges számításának problémája.
Annak érdekében, hogy kiszámítsuk N., szükségünk van az értékre (N-1)! szorozzuk N-vel, 1! = 1-gyel. Általános formában ez a következőképpen írható
A faktoriális számításhoz a the függvényt írjuk le
függvény faktorikus (n˸ egész) ˸ Longint;
mások factorial˸ = n * faktoriális (n-1)
fontolja meg a funkció hívásainak sorrendjét n = 5 értékre.
ü A függvény első hívása a főprogramban történik. Felhívjuk a figyelmet arra, hogy minden funkcióhoz való hozzáféréskor helyi változókból álló készlet jön létre (ebben az esetben a tényleges függvényben csak egy helyi változó n van). Minden egyes helyi változóra a memória a függvény időtartamára kerül kiosztásra. A funkció befejezése után a memória felszabadul és a változók törlődnek.
Tehát hogyan. akkor a vezérlés átkerül az Else ágba, és a függvény faktorikus értékét az n * factorial (n-1) érték adja, azaz 5 * faktoriális (4).
A tényleges függvény második hívása a 4. paraméterrel történik. Ezt a folyamatot addig ismételjük, amíg a paraméter értéke 1 lesz. Ezután n = 1, és ezáltal a függvény tényleges értéke = 1.
Így n = 1 a rekurzió végének feltétele.
A vezérlés átkerül a hívási pontra, vagyis az előző függvényre n = 2˸ factorial˸ = n * faktoriális (n-1). akkor factorial˸ = 2 * 1, tehát factorial (2) = 2. Visszatérünk, felfelé haladva a rekurzív hívások lánca mentén. Így kapjuk a tényleges (5) = 120 értéket.
függvény faktorikus (n˸ egész) ˸ Longint; ha n = 1, akkor factorial˸ = 1 egyéb factorial˸ = n * faktoriális (n-1) vége;