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.