Ce se afiseaza in urma parcurgerii subprogramului:
void f(long n)
{
if(n!=0)
{
f(n/100);
cout<n%10;
}
vreau in detaliu
Răspunsuri la întrebare
Recursivitate. Stiva si coada.
(o sa presupun ca la cout-ul din interioul if-ul ai vrut sa folosesti operatorul <<)
Deci, era mai usor de explicat daca imi dadeai si o valoare pentru n, asa ca, sa zicem ca pentru acest subprogram ai n = 13254. Deci:
(a)Primul lucru pe care il face subprogramul este de a verifica daca 13254 nu este egal cu 0 (n != 0), daca returneaza ca e adevarat, va intra in if-ul respectiv.
(b)Dupa, intra in acelasi subprogram pentru a verifica n/100 (n/100 = 132), si face acelasi lucru ca prima data, verifica daca n != 0, intrand din nou in if.
(c)Din nou, intra in subprogram cu valoarea n/100 (n/100 = 1), verifica daca n != 0, si intra din nou in if.
(d)Acum, va intra din nou intr-un subprogram cu valoarea n/100 (n/100 = 0), verifica daca n != 0 , iar de data asta returneaza fals, continuand cu if-ul de la (c), afisand pe ecran 1 (n%10). Acum va continua cu if-ul de la (b), n fiind 132 si va afisa pe ecran 2 (n%10). Si in final se va intoarce la ecuatia initiala (a), unde n are valoarea 13254, afisand pe ecran 4 (n%10).
Deci, datorita faptului ca nu exista exista niciun spatiu intre cout-uri, subprogramul f(13254) va afisa pe ecran: 124.
Sper ca ti-am fost de ajutor, daca nu ai inteles undeva, nu ezita sa ma intrebi.