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ăspunsuri la întrebare
Răspuns de
1
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.
AfloareiAndrei:
am uitat sa iti explic cum se comporta variabila 'c' in functia asta recursiva. Sa presupunem ca n=1413, Prima conditie 'if' nu este satisfacuta pentru ca n!=0 asa ca intram in 'else' unde c=f(n/10) => f(1413/10) se apeleaza o NOUA functie f(141)...se repeta povestea si se apeleaza o NOUA functie f(14)....se apeleaza o NOUA functie f(1)...se apeleaza o NOUA functie f(0).
Alte întrebări interesante
Matematică,
8 ani în urmă
Informatică,
8 ani în urmă
Limba română,
8 ani în urmă
Geografie,
8 ani în urmă
Matematică,
8 ani în urmă
Limba română,
9 ani în urmă
Ed. tehnologică,
9 ani în urmă
Matematică,
9 ani în urmă