Documente Academic
Documente Profesional
Documente Cultură
1. Scrieti o functie recursiva cu numele cifre care primeste prin parametrul n un numar natual si furnizeaza:
- prin parametrul p numarul format cu cifrele pare ale lui n,
- prin parametrul i numarul format cu cifrele impare ale lui n.
Exemplu:
In urma apelului cifre(4536597,p,i); variabila p va fi egala cu 46, iar i cu 53597.
2. Sa se scrie o functie recursiva care calculeaza si returneaza diferenta dintre suma elementelor de pe pozitii pare si cea a
celor aflate pe pozitii impare dintr-un vector A primit ca parametru impreuna cu n reprezentand numarul lui de elemente.
Elementele tabloului sunt indexate de la 1.
Exemplu:
Daca functia primeste tabloul A={4,5,6,3,2,9} cu n=6, atunci va returna 5 adica (5+3+9)-(4+6+2).
3. Scrieti o functie recursiva cu numele cifre care primeste prin parametrul n un numar natual si furnizeaza:
- prin parametrul p numarul format cu cifrele pare ale lui n,
- prin parametrul i numarul format cu cifrele impare ale lui n.
Exemplu:
In urma apelului cifre(4536597,p,i); variabila p va fi egala cu 46, iar i cu 53597.
4. Scrieti o functie recursiva care primeste ca paramentru un numar natural n si returneaza numarul obtinut din n prin
eliminarea cifrelor impare.
Exemplu: daca n=234435, functia returna 244.
Funcții recursive - exemple
int stergimp(int n)
{
if(n==0) return 0;
else if(n%2==1) return stergimp(n/10);
else return stergimp(n/10)*10+n%10;
}
#include <iostream>
using namespace std;
int main()
{
int A[101][101],n,m;
cin>>n>>m;
citire(A,n,m,1,1);
afisare(A,n,m,1,1);
return 0;
}
6. Se citeste un numar natural n cu cel mult 9 cifre. Afisati numarul de cifre distincte ale lui n. Se vor folosi exclusiv
subprograme recursive.
Exemplu:
Pentru n=38837 se afiseaza 3 (cifrele distinte sunt 3,7 si 8).
#include <iostream>
using namespace std;
Funcții recursive - exemple
int apcif(int n, int c)
{//numarul de aparitii ale lui c in n
if(n<=9) return n==c;
else if(n%10==c) return apcif(n/10,c)+1;
else return apcif(n/10,c);
}
int main()
{
int n;
cin>>n;
cout<<dist(n,9);
return 0;
}
sau
#include <iostream>
int nrdist(int n)
{//numara cifrele distincte ale lui n
if(n==0) return 0;
else if(apcif(n/10,n%10)==0) return nrdist(n/10)+1;
else return nrdist(n/10);
}
int main()
{
int n;
cin>>n;
cout<<nrdist(n);
return 0;
}
7. Se citeste un numar natural n (n<=20). Afisati un desen format din caracterul * ca in exemplul de mai jos. Se vor folosi
exclusiv subprograme recursive.
Exemplu:
Funcții recursive - exemple
Pentru n=3 se afiseaza
*
***
*****
***
*
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
sus(n,1);
jos(n-1,1);
return 0;
}
8. Se citeste un numar natural n. Sa se descompuna ca suma de puteri crescatoare ale lui 2. Se vor folosi doar
prelucrari/calcule realizate cu ajutorul functiilor implementate recursiv.
Exemplu: Pentru n=84 va afisa 4 16 64 (84 se descompune ca 4+16+64)
Funcții recursive - exemple
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
puteri2(n);
return 0;
}
sau
#include <iostream>
using namespace std;
int main()
{
int n;
cin>>n;
puteri2(n,1);
return 0;
}
9. Se citeste un vector a cu n elemente numere intregi. Construiti si afisati doi vectori b si c contruiti astfel:
- vectorul b contine elementele pare din vectorul a
- vectorul c contine elementele impare din vectorul a
Funcții recursive - exemple
Se vor folosi functii recursive pentru citire si afisare, precum si pentru construirea celor doi vectori ceruti.
Exemplu:
date.in
7
2579254
date.out
224
5795
#include <fstream>
using namespace std;
ifstream is("date.in");
ofstream os("date.out");
int main()
{
int a[200],b[100],c[100],n,m=0,k=0;
is>>n;
citire(a,n);
split(a,n,b,m,c,k);
afisare(b,m);
os<<endl;
afisare(c,k);
Funcții recursive - exemple
is.close();
os.close();
return 0;
}
10. Se citeste un vector a cu n elemente numere intregi. Construiti un vector b care sa contina elementele distincte din
vectorul a. Toate prelucrarile vor fi realizate folosind functii recursive.
#include<fstream>
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
int main()
{
int a[100],b[100],k=0, n;
Funcții recursive - exemple
fin>>n;
citire(a,n);
distict(a,n,b,k);
afis(b,k);
fin.close();
fout.close();
return 0;
}
11. Se citeste un vector cu n elemente numere naturale. Afisati elementele care sunt numere factoriale.
Se vor folosi functii recursive pentru toate prelucrarile necesare.
Ex: 6
1 3 7 6 24 100
se vor afisa numerele 1 6 24
#include<fstream>
using namespace std;
ifstream fin("r.in");
ofstream fout("r.out");
int main()
{
int n,a[100];
fin>>n;
citire(n,a);
afis(n,a);
fin.close();
fout.close();
Funcții recursive - exemple
return 0;
}
12. Sa se calculeze recursiv de cate ori apare o valoare intreaga x intr-un vector a cu n elemente intregi.
#include<iostream>
using namespace std;
int a[100],n,x;
int main()
{
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
cin>>x;
cout<<nrap(n,x);
system("pause");
return 0;
}
#include<iostream.h>
using namespace std;
int suma(int n)
{ if (n==0) return 0;
else return suma(n-1) + n*(n+1);
}
int main()
{
cout<<suma(3);
system("pause");;
return 0;
}
#include<iostream.h>
float suma(int n)
{ if (n==0) return 0;
else return suma(n-1) + 1.0/n;
}
Funcții recursive - exemple
int main()
{
cout<<suma(5);
system("pause");;
return 0;
}
15. Sa se scrie o functie recursiva care primeste un parametru n numar natural si afiseaza:
1 2 3 4 ... n
...
123
12
1
#include<iostream>
using namespace std;
void afis(int n)
{ if(n>0)
{
for(int i=1;i<=n;i++) cout<<i<<" ";
cout<<endl;
afis(n-1);
}
}
int main()
{
afis(6);
return 0;
}
16. Sa se scrie o functie recursiva care primeste un parametru n numar natural si afiseaza:
1 2 3 4 ... n
...
123
12
1
#include<iostream>
using namespace std;
void afis(int n)
{ if(n>0)
{
for(int i=1;i<=n;i++) cout<<i<<" ";
cout<<endl;
afis(n-1);
}
}
int main()
{
Funcții recursive - exemple
afis(6);
return 0;
}
17. Sa se scrie o functie recursiva pentru calculul primei cifre a unui numar natural.
#include<iostream>
using namespace std;
int PC(int n)
{
if ( n <= 9 ) return n;
else
return PC(n/10);
}
int main()
{
cout << PC(2405);
system("pause");
return 0;
}
18. Sa se determine cifra maxima a unui numar natural folosind o functie recursiva.
#include<iostream>
int max(int n)
{ if ( n <= 9 ) return n;
else
{
int m = max(n/10);
if ( m > n%10 )
return m;
else
return n%10;
}
}
int main()
{
cout << max(23614);
system("pause");
return 0;
}
19. Sa se scrie o functie recursiva care sa afiseze descompunerea in factori primi a unui numar natural.
#include<iostream.h>
20. Sa se scrie o functie recursiva care primeste 3 parametri: n - numar natural, c1,c2 cifre si returneaza numarul obtinut
din n prin inlocuirea tuturor aparitiilor cifrei c1 cu c2.
Ex. din n=2324, c1=2 si c2=5 returneaza 5354
#include<iostream.h>
21. Sa se scrie o functie recursiva care primeste un parametru n numar natural si returneaza numarul obtinut din n prin
scaderea cu 1 a cifrelor impare si marirea cu 1 a celor pare.
Ex. din n=2324 returneaza 3235
#include<iostream.h>
long schimba(long n)
{ if(n==0) return 0;
else if(n%2==1) return schimba(n/10)*10+n%10-1;
else return schimba(n/10)*10+n%10+1;
}
void main()
{
cout<<schimba(23362);
}