Functii 1
1. Să se găsească valoarea termenului al n-lea din șirul lui Fibonacci.
F(0)=0; F(1)=1;F(n)=F(n-1)+F(n-2).
#include<iostream.h>
long 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<<"f("<<n<<")="<<f(n)<<endl;
}
2. Să se afișeze suma primelor n numere naturale.
Se observă că pentru n=0 suma este 0 – condiția de oprire. Pentru oricare ar fi n număr natural suma primelor n elemente este suma primelor n-1 elemente la care se adaugă n. s(n)=s(n-1)+n.
#include<iostream.h>
long int n;
int s(int n)
{
if(n==0) return 0;
else return s(n-1)+n;
}
void main()
{
cout<<"n=";cin>>n;
cout<<"s("<<n<<")="<<s(n)<<endl;
}
3. Să se afișeze produsul numerelor pare dintre 1 și n.
Pentru n=0 produsul este 1 (0!=1). Dacă n este număr par produsul se obține în funcție de produsul numerelor de la 1..n-1 la care se înmulțește n. Dacă numărul n este impar valoarea produsului nu se schimbă.
#include<iostream.h>
long int n;
int s(int n)
{
if(n==0) return 1;
else if(n%2==0)return s(n-1)*n;
else return s(n-1);
}
void main()
{
cout<<"n=";cin>>n;
cout<<"s("<<n<<")="<<s(n)<<endl;
}
4. Care este al n-lea termen al șirului s(n)=0 dacă n=0; s(n)=(2n-1)+s(n-1) pentru n>0 ?
#include<iostream.h>
long int n;
int s(int n)
{
if(n==0) return 0;
else return s(n-1)+2*n+1;
}
void main()
{
cout<<"n=";cin>>n;
cout<<"s("<<n<<")="<<s(n)<<endl;
}
5. Se citesc de la tastatură două numere a și n. Cât este valoarea lui a la puterea n?
#include<iostream.h>
long int n;int a;
int s(int a,int n)
{
if(n==0) return 1;
else return s(a,n-1)*a;
}
void main()
{
cout<<"n=";cin>>n;
cout<<"a=";cin>>a;
cout<<s(a,n)<<endl;
}
6. Găsiți al n-lea termen al șirului definit în felul următor: a(0)=1, a(n+1)=1+a(n)*a(n) dacă n>=1.
#include<iostream.h>
long int n;
int a(int n)
{
if(n==0) return 1;
else return a(n-1)*a(n-1)+1;
}
void main()
{
cout<<"n=";cin>>n;
cout<<a(n)<<endl;
}
7. Să se afișeze suma cifrelor dintr-un număr natural citit de la tastatură.
#include<iostream.h>
long int n;
int s(int n)
{
if(n==0) return 0;
else return s(n/10)+n%10;
}
void main()
{
cout<<"n=";cin>>n;
cout<<s(n)<<endl;
}
8. Să se afișeze numărul cifrelor impare dintr-un număr care se citește de la tastatură.
#include<iostream.h>
long int n;
int s(long int n)
{
if(n==0) return 0;
else if ((n%10)%2==1)return s(n/10)+1;
else return s(n/10);
}
void main()
{
cout<<"n=";cin>>n;
cout<<s(n)<<endl;
}
9. Să se afișeze cmmdc(a,b). a și b se citesc de la tastatură.
#include<iostream.h>
long int a,b;
long int cmmdc(long int a, long int b)
{
if(a==b) return a;
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(a,b)<<endl;
}
10. Să se afișeze cmmdc dintre n numere citite de la tastatură.
#include<iostream.h>
long int a[100];
int n;
long int cmmdc(long int a, long int b)
{
if(a==b) return a;
if(a>b) return cmmdc(a-b,b);
else return cmmdc(a,b-a);
}
void citire()
{cout<<"n=";cin>>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin>>a[i];}
}
void cmmdc_n()
{
int m;
m=cmmdc(a[1],a[2]);
for (int i=3;i<=n;i++)m=cmmdc(m,a[i]);
cout<<"cmmdc_n="<<m<<endl;
}
void main()
{
citire();
cmmdc_n();
}
11. Se citesc de la tastatură n numere. Să se afișeze suma numerelor strict positive.
#include<iostream.h>
long int a[100];
int n;
void citire()
{cout<<"n=";cin>>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin>>a[i];}
}
int s(int n)
{
if(n==0)return 0;
else if(a[n]>0) return s(n-1)+a[n];
else return s(n-1);
}
void main()
{
citire();
cout<<s(n)<<endl;
}
12. Se citesc de la tastatură n numere. Să se afișeze numărul de numere pare din șir.
#include<iostream.h>
long int a[100];
int n;
void citire()
{cout<<"n=";cin>>n;
for(int i=1;i<=n;i++)
{cout<<"a["<<i<<"]=";cin>>a[i];}
}
int c(int n)
{
if(n==0)return 0;
else if(a[n]%2==0) return c(n-1)+1;
else return c(n-1);
}
void main()
{
citire();
cout<<c(n)<<endl;
}