Două oglinzi față în față. Păpușa matrioșka: deschizi una, înăuntru e alta, mai mică — până la cea plină, care nu se mai deschide. Recursivitatea rezolvă o problemă reducând-o la ACEEAȘI problemă, dar mai mică. Subiect clasic de BAC!
Orice funcție recursivă corectă are exact aceste două ingrediente — dacă lipsește unul, programul moare.
Situația atât de simplă încât răspunsul se dă DIRECT, fără alt apel. Păpușa plină din mijloc. fact(1) = 1. Fără el, apelurile nu se opresc niciodată.
Reduce problema la una STRICT MAI MICĂ: fact(n) = n · fact(n−1). Fiecare apel trebuie să se APROPIE de cazul de bază — altfel, tot infinit.
Fiecare apel primește un CADRU pe stivă (ții minte stiva din clasa a IX-a? LIFO!). Coborâm până la bază, apoi rezultatele urcă înapoi.
Aceleași probleme pe care le-ai rezolvat iterativ în clasa a IX-a (M03!) — acum în haina recursivă cerută la examen.
Baza: numărul cu O cifră. Pasul: ultima cifră + suma restului.
Algoritmul din M03 (IX), scris în trei rânduri. Perla recursivității.
Baza: a⁰ = 1. Pasul: a · a^(n−1).
Aceeași schemă ca suma — schimbi doar ce combini la întoarcere.
Recursivitatea e elegantă, dar are două moduri celebre de a da greș.
| Criteriu | Iterativ (buclă) | Recursiv |
|---|---|---|
| memorie | constantă | un cadru pe apel (stiva!) |
| cod | uneori mai lung | scurt, oglindește definiția matematică |
| când strălucește | parcurgeri simple | probleme auto-similare: Divide et impera (Modulul 11!) |
Cinci întrebări — în stil BAC.
Recursivitatea, condensată.