Am o problema la recursivitate.
void f(int x)
{
if(x>0)
if(x%4==0)
{
cout<<'x' ;
f(x-1) ;
}
else
{
f(x/3);
cout<<'y' ;
}
}
La valoarea 26, programul imi afiseaza xyyy, dar dupa cum am invatat la clasa, cred ca s-ar afisa yyyx. imi puteti explica de ce?
Răspunsuri la întrebare
x=26
x=2626%4==0 (F)
x=2626%4==0 (F)x=8
x=2626%4==0 (F)x=88%4==0 (A)
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=7
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)x=2
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)x=22%4==0 (F)
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)x=22%4==0 (F)x=0 (aici se termina)
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)x=22%4==0 (F)x=0 (aici se termina)si acum iti afiseaza fiecare y (pt f(2), f(7) si f(26))
x=2626%4==0 (F)x=88%4==0 (A)se afiseaza un x si apelezi f(x-1)x=77%4==0 (F)x=22%4==0 (F)x=0 (aici se termina)si acum iti afiseaza fiecare y (pt f(2), f(7) si f(26))gen cand ai cout dupa apelarea functiei asteapta sa se termine apelarea (in cazul asta dupa ce x devine 0 se opreste)