Informatică, întrebare adresată de sikesjack1, 9 ani în urmă

Buna!
Incerc sa inteleg recursivitatea. Imi puteti explica aceasta functie recursiva?? Eu nu inteleg unde are loc incrementarea, cand algoritmul gaseste o cifra egala cu zero.

#include

using namespace std;
int nr_cif_zero (int n)
{

if (n==0)
return 1;

if (n<10 && n!=0)
return 0;
else
{
if (n%10==0) return (1+nr_cif_zero(n/10));
if (n%10!=0) return nr_cif_zero(n/10);
}

}
int main()
{
int n;
cin>>n;
cout< return 0;
}

Multumesc!

Răspunsuri la întrebare

Răspuns de radusibiurs
0

Răspuns:

Functia returneaza numarul de cifre egale cu 0 dintr-un numar.

Explicație:

O sa redenumesc functia ta f(n), in loc de nr_cif_zero(n).

Sa zicem ca ai numarul n = 3090080.

Ai pe rand:

  • f(3090080) = 1 + f(309008)
  • f(309008) = f(30900)
  • f(30900) = 1 + f(3090)
  • f(3090) = 1 + f(309)
  • f(309) = f(30)
  • f(30) = 1 + f(3)
  • f(3) = 0

Dupa ai obtinut f(3) = 0, poti calcula f(30) = 1 + f(3) = 1 + 0 = 1.

Apoi, f(309) = f(30) = 1.

Apoi, f(3090) = 1 + f(309) = 2.

Si tot asa.

Alte întrebări interesante