Sunteți pe pagina 1din 2

Funcţii indirect recursive : două funcţii A si B se numesc indirect recursive dacă se apelează reciproc,

A apelează B şi B apelează A.

Pentru a putea fi executată, orice funcţie trebuie să fie scrisă înaintea modului apelant. Dacă
dorim să scriem funcţia după modulul apelant, atunci trebuie să îi dăm prototipul înaintea
modulului apelant.
Presupunem că avem două funcţii A şi B care se apelează reciproc, scrise în această ordine.
Funcţia A apelează funcţia B, dar modulul apelat B se află după cel apelant A. În consecinţă, pentru
ca acest apel să poată fi executat, trebuie să dăm prototipul funcţiei B.
Prototipul unei funcţii este o reproducere a antetului său, cu două deosebiri:

• între paranteze, în lista parametrilor formali nu se mai scriu şi identificatorii parametrilor, ci


doar se enumeră tipurile acestora, separate prin "virgulă" ;
• prototipul se încheie cu caracterul "punct şi virgulă" .

Folosind două funcţii recursive, să se calculeze valoarea funcţiilor matematice f(x) şi g(x), pentru o
valoare a argumentului X introdusă de la tastatură.

f(x) = 1 + g(x) , pentru x<3 g(x) = 5 , pentru x<o


x * x , pentru x>3 2 * x + f(x+1) , pentru x >0

#include <iostream.h>
#include <conio.h>
using namespace std;
int x ; int G (int) ; int F (int x)
{
if (x>3) return x*x ;
else return 1 + G (x) ;
}
int G (int x)
{
if (x<0) return 5;
else return 2 * x + F (x+1) ;
}
int main ()
{
cout << " x= " ; cin >> x ;
cout << " f ( " << x << " )= " << F (x) << " \n " ;
cout << " g ( " << x << " ) = " << G (x) ;
getch () ;
return 0;
}

S-ar putea să vă placă și