Informatică, întrebare adresată de smallworldsanalolee, 9 ani în urmă

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

Răspuns de Corehowl
1

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.


smallworldsanalolee: Multumesc foarte foarte mult!
Corehowl: Cu placere!
Alte întrebări interesante