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

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?


Porecla0987: Nu, daca nu ne spui ce ar trebui sa faca.

Răspunsuri la întrebare

Răspuns de crashedml
1

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)

Alte întrebări interesante