Răspuns :
Răspuns:
#include <iostream>
using namespace std;
void f(long n)
{
cout << n%10;
if (n!=0)
{
f(n/100); cout << n%10;
}
}
int main()
{
f(12345);
return 0;
}
Explicație:
Am arătat un tabel cu paşii de execuţie, a apelurilor recursive
La momentul n=12345 şi apelul f(12345)
se execută primul cout, cu afişarea ultimei cifre, se verifică n!=0, şi dacă e true se execută blocul lui if, care conţine un autoapel la subprogram. La acest nivel n=12345, când se va realiza apelul, atunci n va primi valoarea n/100. La cest nivel cînd se vor termina autoapelurile, se vor executa al doilea cout ce va afişa ultima cifră a lui n, care diferă de la nivel la nivel.
Sper că am fost explicit...
Recursia la apelurile recursive crează o stivă a locaţiilor de memorie (cât este adevărată condiţia lui if), fiecare nivel pentru diferite valori ale lui n. Parcă ar fi un urcuş la alte etaje, cât condiţia e true. În momentul când condiţia e false se începe coborârea de la etajul de sus în jos cu executarea acelor instrucţiuni care nu au fost executate la etajul respectiv...
Succese!
Vă mulțumim că ați ales să vizitați platforma noastră dedicată Informatică. Sperăm că informațiile disponibile v-au fost utile. Dacă aveți întrebări suplimentare sau aveți nevoie de sprijin, nu ezitați să ne contactați. Vă așteptăm cu drag și data viitoare! Nu uitați să adăugați site-ul nostru la favorite pentru acces rapid.