Folosesti functie care returneaza o valoare , cand ai un calcul de facut si vrei sa aduci valoarea calculata in main sau intr-un alt subprogram din care ai apelat subprogramul.
Folosesti functie care nu returneaza o valoare, cand faci afisari, citiri de date si lucrezi prin intermediul parametrilor, in general.
Un subprogram recursiv este un subprogram care se autoapeleaza din interiorul sau( numele functiei apare in interiorul ei).