Informatică, întrebare adresată de smizdoismizda, 8 ani în urmă

Imi puteti explica cum functioneaza codul acesta:

int f(int n) {
if (n <= 1)
return n;
return f(n-1) + f(n-2);
}
Si de ce daca apelez functia cu f(10) imi afiseaza 55?

Răspunsuri la întrebare

Răspuns de iredbaroniredbaron
2

Explicație:

ei bine, funcția ta f, lucrează următorul cod:

- verifica dacă numărul n (10 introdus de tine la apelarea funcții) este mai mic sau egal cu 1. Dacă aceasta condiție este adevărată, funcția iti returneaza(afișează) numărul n neschimbat, cum la tine 10 NU este mai mic sau egal cu 1, funcția sare peste acest "if".

- acum, codul tău, pentru ca a trecut de acel "if", în loc sa scrie else(altfel), scrie direct codul ce trebuia în acel else, pentru a scrie mai puțin. Poți face și tu asta în alte coduri, dacă partea de cod din else este ultima parte de cod din funcție. acum ca am lămurit de ce nu a scris else, sa revenim al cod. el acum face un algoritm, ceva repetitiv: în funcție, apelează din nou funcția care trece prin niște pași, pana când n este 1 sau mai mic decat 1 și atunci îți returnează numărul 55, după un algoritm mai lung. Nu are sens sa ți-l explic, poate da bătăi de cap :] pur și simplu repeta acea funcție și acel if de la început face ca aceasta buclă sa nu fie infinita, ca tu sa ajungi la un nr.,al tău fiind 55.Sper ca te am lămurit!


smizdoismizda: Inteleg if-ul si de ce nu sa pus else dar partea cu f(n-1) + f(n-2) nu o inteleg. Ce se intampla cand ajunge la partea asta, se apeleaza functia f(10-1) si o aduna cu f(10-2) ?
Alte întrebări interesante