Se consideră subprogramul recursiv definit alăturat. Ce valori vor fi
afişate pe ecran în urma apelului beta(15);?
void beta(int n)
{if (n!=1)
{cout<<n<<” ”;
if (n%3==0) beta(n/3);
else beta(2*n-1);}
else cout<<1;
}
AJUTOR

Răspuns :

Răspuns:

15 5 9 3 1

Explicație:

Se apeleaza functia cu parametrul 15.

Este diferit de 1

Se afiseaza parametrul 15

Se verifica daca este divizibil cu 3

Este divizibil, deci se re-apeleaza functia cu parametrul 5 ( 15/3).

-------------

Se apeleaza functia cu parametrul 5.

Este diferit de 1

Se afiseaza parametrul 5

Se verifica daca este divizibil cu 3

Nu este divizibil, deci se re-apeleaza functia cu parametrul 9 ( 5*2-1 ).

--------

Se apeleaza functia cu parametrul 9.

Este diferit de 1

Se afiseaza parametrul 9

Se verifica daca este divizibil cu 3

Este divizibil, deci se re-apeleaza functia cu parametrul 3 ( 9/3).

----

Se apeleaza functia cu parametrul 3.

Este diferit de 1

Se afiseaza parametrul 3

Se verifica daca este divizibil cu 3

Este divizibil, deci se re-apeleaza functia cu parametrul 1 ( 3/3).

---

Se apeleaza functia cu parametrul 1.

Este egal cu  1

Se afiseaza 1