Extras din laborator
Problema 1. Numere Fibonacci.
Să se alcatuiască un Program în C++ pentru a determina numerele Fibonacci atit recursiv cît și nerecursiv.
#include <iostream>
using namespace std;
int main()
{
int n;
cout << "n = ";
cin >> n;
int nr_2, nr_1, nr_0;
nr_0 = 1;
nr_1 = 1;
cout << nr_0 << "n" << nr_1 << "n";
for(int i = 3; i <= n; i++)
{
nr_2 = nr_1 + nr_0;
nr_0 = nr_1;
nr_1 = nr_2;
cout << nr_2 << "n";
}
return 0;
}
Program recursiv
#include<iostream>
using namespace std;
int fibonacci(int n)
{
if((n==1)||(n==0))
{
return(n);
}
else
{
return(fibonacci(n-1)+fibonacci(n-2));
}
}
int main()
{
int n,i=0;
cout<<"Introduceti numarul de termeni pentru seria Fibonacci:";
cin>>n;
cout<<"nSeria Fibonacci esten";
while(i<n)
{
cout<<" "<<fibonacci(i);
i++;
}
return 0;
}
Problema 2. Numere Fibonacci și sectiunea de aur.
Să se alcatuiască un Program care din numerele Fibonacci calculeaza numarul de aur.
#include<stdio.h>
int main()
{
int n,i,a,b,c,p;
printf("Introduceti numarul n al seriei: ");
scanf("%d",&n);
i=1;
a=0;
b=1;
while(i<=n)
{
printf("%d ",a);
c = a + b;
a = b;
b = c;
i++;
}
p=a/b;
printf("Numarul de aur este %lf", p);
return 0;
}
Problema 3. Șir master.
Se dă șirul de numere 1, 1, 2, 3, 7, 23, 164...
Să se determine formula de recurenta si sa se scrie program varianta recursivă și nerecursivă.
#include <stdio.h>
#include <iostream.h>
int Masr(int n){
if (n==0 || n==1) return 1;
if (n==2) return 2;
if (n>2) return Masr(n-1)*Masr(n-2)+Masr(n-3);
}
int main(){
int n,k;
cout<<"n=";
cin>>n; cout<<"Sirul Master 2018 este: ";
for(k=0;k<n;k++)
cout<<Masr(k)<<" ";
return 0;
}
Problema 4. Factorialul unui număr.
Să se scrie o funcție C++ recursivă care returnează factorialul unui număr dat ca parametru.
Program nerecursiv
#include <iostream>
using namespace std;
int main()
{
int n,i,p=1;
cout<<"Dati n="; cin>>n;
for (i=2; i<=n; i++)
p=p*i;
cout <<p<< " Factorialul numarului introdus este="
<<p<< endl;
return 0;
}
Program recursiv
#include<iostream.h> //FACTORIAL
int n;
int fact(int x)
{if ((x<=1)) //condiția de oprire
return 1;
else
return (x*fact(x-1)); //autoapelul functiei
}
int main()
{
cout<<"n="; cin>>n;
cout<<"n!="<<fact(n); //apelul functiei
}
Problema 5. Suma elementelor sirului.
Se dă șirul de numere 1, 5, 9, 13, 17, 21,...
Sa se scrie un program varianta recursivă și nerecursivă pentru determinarea sumei elementelor acestui sir.
Preview document
Conținut arhivă zip
- Teoria recursiilor.docx