Sunteți pe pagina 1din 2

/*Verificare recursiva daca un numar este prim*/

long prim(long n,int d)


{if (d==1) return 1;
else if(n%d==0) return 0;
else return prim(n,d-1);
}
//apel: (prim(n,n/2)==1)?cout<<"este prim":cout<<"nu este prim";
------------------------------
/*Subprogram recursiv pt suma primelor n patrate perfecte*/
int suma(int n) {
if(n==0) return 0;
else return suma(n-1)+n*n; }
------------------------------
/*Functie recursiva pt de cate ori apare o valoare intreaga x intr-un vector a cu n elemente intregi*/

int nrap(int a[], int n, int x){


if(n==0) return 0;
else if(a[n]==x) return 1+nrap(n-1,x);//daca vect incepe de la 1
else return nrap(n-1,x); }
------------------------------
/*functie recursiva care afiseza descompunerea in factori primi a unui numar natural*/

void desc(int n, int d){


if (n1)
if (n%d==0) { cout<<d<<"\t"; desc(n/d,d); }
else desc(n, d+1);
}

------------------------------
/*program recusiv care rezolva o expresie matematica. */

/*Exemplul1:E=1+3+5+7+..+(2n-
int exp(int n) {

if(n==1) return 1;

else return exp(n-1)+(2*n-1);

}
----------------

/*Exemplul2:E=2-4+6++((-1)^(

int exp(int n) {

if(n==1) return 2;

else

if(n%2==0) return exp(n-1)-(2*n);

else return exp(n-1)+(2*n);


}
------------------------------
/*functie recursiva care primeste un parametru n numar natural si returneaza numarul fara cifrele pare*/
long sterge(long n){
if(n==0) return 0;
else if(n%2==1) return sterge(n/10)*10+n%10;
else return sterge(n/10);
}
------------------------------
/*functie recursiva care primeste trei parametri :
n- numar natural; c 1 si c2 cifre si returneaza numarul obtinut din n prin inlocuirea tuturor aparitiilor cifrei
c1 cu c2
Exemplu: n= 2324 , c1=2 si c2=5 returneaza 5354*/

int schimba(int n, int c1, int c2){


if(n==0) return 0
else if(n%10==c1) return schimba(n/10,c1,c2)*10+c2;
else return schimba(n/10,c1,c2)*10+n%10;
}
------------------------------
citire matrice recursiv

void citire(int a[][101], int n, int m, int i, int j)


{
if(i<n)
{
cin>>a[i][j];
if(j<m-1) citire(a,n,m,i,j+1);
else citire(a,n,m,i+1,0);
}
}
------------------------------

/*S se scrie un program recursiv, pentru rezolvarea cmmdc-ului a n numere ntregi fr semn (pentru
determinarea cmmdc-ului vom folosi algritmul lui Euclid prin scderi).*/
#include <stdio.h>

unsigned int cmmdc_2(unsigned int a, unsigned int b)


{
if(a==b) return a;
if(a>b) return cmmdc_2(a-b,b);
else
return cmmdc_2(a,b-a);
}
unsigned int cmmdc_n(unsigned int x[], int n)
{
if (n==2) return cmmdc_2(x[0],x[1]);
else return cmmdc_2(cmmdc_n(x,n-1),x[n-1])
}
int main()
{
unsigned int x[20];
int n;
printf("Introduceti n: ");
scanf("%d",&n);
for(int i=0;i<n;i++)
{
printf("elementul %d= ",i+1);
scanf("%u",&x[i]);
}
if (n==1)
printf("\nCmmdc-ul numerelor: %u",x[0]);
else
printf("\nCmmdc-ul numerelor: %u",cmmdc_n(x,n));

return 0;
}