Sunteți pe pagina 1din 4

Probleme rezolvate

1) Sa se afle cmmdc pentru 2 numere utilizand varianta recursiva.

#include<iostream.h>
int a,b;
int cmmdc(int a,int b)
{
if(a==b) return a;
else
if (a>b) return cmmdc(a-b,b);
else return cmmdc(a,b-a);
}
void main()
{
cout<<"a=";cin>>a;
cout<<"b=";cin>>b;
cout<<"cmmdc: "<<cmmdc(a,b);
}
2) Sa se scrie o functie recursiva care sa realizeze descompunerea unui numar
in factori primi.

#include<iostream.h>
void desc(int n,int,d,int p)
{
if(n>1)
if(n%d==0) desc(n/d,d,p+1);
else
{
if (p!=0) cout<<d<<" la puterea "<<p<,endl;
desc(n,d+1,0);

}
else if (p!=0) cout<<d<<" la puterea "<<p;
}
void main()
{
int n;
cin>>n;
desc(n,2,0);
}

3) Sa se scrie o functie recursiva pentru a transforma un numar natural n, din


baza 10 in baza b.

#include<iostream.h>
int n,b;
void baza(int n,int b)
{
int r=n%b;
if(n>=b) baza(n/b,b);
cout<<r;
}
void main()
{
cout<<"n=";cin>>n;
cout<<"b=";cin>>b;
baza(n,b);
}

4) Se citeste n.Sa se calculeze termenul de ordin n al sirului lui Fibonacci in


varianta recursiva.

#include<iostream.h>
int n;
int f(int n)
{
if(n==0) return 0;
else if(n==1) return 1;
else return f(n-1)+f(n-2);
}
void main()
{
cout<<"n=";cin>>n;
cout<<"termenul de ordin "<<n<<" este: "<<f(n);
}

5) Sa se scrie o functie recursiva care sa verifice daca un numar n citit de la


tastatura este prim sau nu.

#include<iostream.h>
int prim(int n,int d)
{
if(d==1) return 1;
else
if(n%d==0) return 0;
else
return prim(n,d-1);
}
void main()
{
cin>>n;

if(prim(n,n/2)==1) cout<<"este prim";


else cout<<"nu este prim"; }

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