👤

Buna!
Imi poate explica cineva cum functioneaza acest program recursiv?
int f(int n)
{
int c;
if (n==0)
return 9;
else
{
c=f(n/10);
if (n%10 return n%10;
else
return c;
}
}
cand ii dau valoarea 5, imi returneaza tot 5 si nu inteleg de ce..


Răspuns :

Răspuns:

Am sa repostez functia f() pentru ca ai cateva greseli la 'if-ul' din primul 'else'

#include <iostream>

using namespace std;

int f(int n)

{

 int c;

 if (n==0)

 {

   return 9;

 }

 else

 {

   c=f(n/10);

   if(n%10) // ###

   {

     return(n%10); // DIN CAUZA ASTA...EXPLICATIE LAS MAI JOS

   }

   else

   {

     return c;

   }

 }

}

int main()

{

 cout << f(5) << endl;

 cout << f(0) << endl;

}

Explicație:

###

iti returneaza valoarea 5 pentru ca conditia "if(n%10)" inseamna ca, "daca 5 modulo 10 are rest (restul impartirii > 0), sa iti returneze restul impartirii 5 / 10."

5 / 10 = cat 0 si rest 5    (10 * 0 + 5 = 5)

Modulo (%) iti arata restul unei impartiri.