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ăspunsuri la întrebare
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