Recursivitatea: Condiții de corectitudine


Regulile fundamentale pentru ca recursivitatea să fie definită corect:

1. trebuie să existe cazuri elementare, care se pot rezolva direct;

2. cazurile care nu se rezolvă direct trebuie să se reducă la cazurile elementare după un număr de pași.

O funcţie greşită pentru suma cifrelor unui număr natural n este următoarea:

int
suma (
int
n)
{
  
return
n%10+suma(n/10);
}

Funcţia este greşită pentru că nu tratează cazurile elementare. Ca urmare, recursia nu se opreşte niciodată.

Pentru a calcula suma cifrelor, se elimină succesiv toate cifrele sale, până când n devine 0. Din acest moment, se evaluează la infinit suma(0), deoarece 0/10 este permanent 0.

Funcţia corectă ar fi fost:

int
suma (
int
n)
{
  
if
(!n)
return
0;
  
return
n%10+suma(n/10);
}
Obiective