· X - starea inițială;
Y este o stare intermediară;
· Z este starea finală. (vezi figura de mai sus)
1 pas - transferați (n-1) discul de la tija X la tija Y, folosind tija Z ca auxiliar;
2 pas - transferați un disc inferior de la tija X la tija Z;
Pasul 3 - transferați (n-1) discul din tija Y în tija Z, folosind tija liberă X.
4. Astfel avem o procedură recursivă
Procedură Hanoi (cuvânt n;; x, y, z˸ char);
apoi scriteln ('Mutare', x, 'on', z)
Problema calculării factorială a unui număr natural.
Pentru a calcula N. aveți nevoie de valoarea (N-1)! înmulțiți cu N, cu 1! = 1. Într-o formă generală, aceasta poate fi scrisă după cum urmează
Pentru a calcula factorialul, descriem funcția ˸
funcția factorial (n˸ integer) ˸ Longint;
altfel factorial˸ = n * factorial (n-1)
ia în considerare secvența apelurilor acestei funcții pentru n = 5.
ü Primul apel la funcție are loc în programul principal. Rețineți că, cu fiecare acces la funcție, se va crea un set de variabile locale (în acest caz există doar o variabilă locală n în funcția factorial). Pentru fiecare variabilă locală, memoria este alocată pe durata funcției. După terminarea funcției, această memorie este eliberată și variabilele sunt șterse.
Deci, cum. atunci controlul este transmis ramurii Else și factorialului funcției i se atribuie valoarea n * factorial (n-1), adică 5 * factorial (4).
Al doilea apel la funcția factorial are loc cu parametrul 4. Acest proces se repetă până când valoarea parametrului devine 1. Apoi n = 1 și deci valoarea funcției factorial = 1.
Astfel, n = 1 este condiția pentru sfârșitul recursiunii.
Controlul este transferat la punctul de apel, adică la funcția anterioară pentru n = 2˸ factorial˸ = n * factorial (n-1). apoi factorial˸ = 2 * 1, deci factorial (2) = 2. Ne întoarcem înapoi, urcând în sus de-a lungul lanțului de apeluri recursive. Astfel, obținem valoarea factorialului (5) = 120.
funcția factorial (n˸ integer) ˸ Longint; începe dacă n = 1 atunci factorial˸ = 1 alt factorial˸ = n * sfârșitul factorial (n-1);