Recursivitate indirecta

 

Exista posibilitatea ca un subprogram sa se autoapeleze si sa apeleze un alt subprogram care la randul lui sa il apeleze pe primul. In aceasta situatie este vorba despre recursivitate indirecta. Fie sirul: a0, b0, a1,b1, a2,b2….., an, bn.

 

Unde:   si

Sa se scrie un program care sa calculeze an si bn.

 

Iata o solutie:

 

#include<iostream.h>

#include<math.h>

#include<conio.h>

double a0,b0;

int n;

 

double fctb(int n);

 

double fcta(int n)

{if (n==0)

    return a0;

else

   return (fcta(n-1)+fctb(n-1))/2;

}

 

double fctb(int n)

{if (n==0)

    return b0;

else

   return sqrt(fcta(n-1)*fctb(n-1));

}

 

 

void main()

{clrscr();

a0=2;

b0=8;

cout<<"n=";

cin>>n;

cout<<endl<<fcta(n)<<" "<<fctb(n)<<endl;

for(int i=0;i<=n;i++)

   cout<<fcta(i)<<" "<<fctb(i)<<"; ";

getch();

}