Contact și feedback

Nu obții 100 de puncte sau ai nelămuriri în privința problemelor? Scrie-mi pe Instagram.


Ai găsit o greșeală, vrei să raportezi un utilizator sau vrei să comunici altceva? Folosește formularul de contact.


Vrei să ne transmiți o părere despre platformă? Folosește formularul de feedback.

Shortcuturi

Folosește următoarele shortcuturi pentru a naviga mai ușor pe platformă.

Generale

Meniu shortcuturi?
Căutare probleme sau utilizatori/
Navigare printre rezultatele căutării↑, ↓
Meniu de contact și feedbackCTRL + Shift + F
Ieșire din meniuriEsc

Editor probleme

Setări editorCTRL + Shift + S
Schimbare stil editorCTRL + Shift + E
Șabloane de codCTRL + Shift + 1/2/3
Golire editorCTRL + Shift + 4

Generarea șirului Fibonacci generalizat în C++

Dându-se două numere naturale, f1 și f2, să se genereze șirul Fibonacci generalizat, cu primii doi termeni f1 și f2 și termenul general f(n) = f(n - 1) + f(n - 2).

Exemplu. Pentru f1 = 3 și f2 = 1, primele elemente ale șirului sunt 3 1 4 5 9 14 23… (4 = 3 + 1, 5 = 1 + 4, 9 = 4 + 5, …).

Vom genera doar primele 10 elemente pentru a exemplifica algoritmul.

Vom prezenta două metode — una cu vectori și una folosind doar trei variabile.

Metoda 1 (vectori)

Vom crea un șir care să conțină șirul Fibonacci generalizat, în care primii doi termeni sunt f1 și f2. Vom aplica formula termenului general f[n] = f[n - 1] + f[n - 2] pentru a genera următorii termeni. La final, vom afișa vectorul generat.

Implementare C++

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim primii doi termeni
    int f1, f2;
    cin >> f1 >> f2;

    //Formăm șirul Fibonacci generalizat
    int f[11];
    f[1] = f1; //Atribuim primele două valori în șir
    f[2] = f2;
    for(int i = 3; i <= 10; i++) { //Folosind termenul general al șirului, generăm restul elementelor
        f[i] = f[i - 1] + f[i - 2];
    }

    //Afișăm șirul f la final
    for(int i = 1; i <= 10; i++) {
        cout << f[i] << " ";
    }
    return 0;
}

Metoda 2 (trei variabile)

Observăm că dacă avem doi termeni în două variabile, după ce generăm noul termen, nu mai avem nevoie de termenul mai vechi. Astfel, putem să procedăm astfel:

  • Creăm o variabilă auxiliară aux, care ia valoarea termenului curent (f1 + f2);
  • Variabila f1 preia valoarea lui f2 (f2 devine noul f1);
  • Variabila f2 preia valoarea lui aux (aux este acum f1);
  • Afișăm f2 (elementul curent);
  • Repetăm pașii până când generăm primii n termeni.

Vom afișa înainte primii doi termeni.

Implementare C++

#include <iostream>

using namespace std;

int main()
{
    //Declarăm și citim primii doi termeni
    int f1, f2;
    cin >> f1 >> f2;

    //Formăm și afișăm șirul Fibonacci generalizat
    cout << f1 << " " << f2 << " "; //Afișăm primii doi termeni
    for(int i = 3; i <= 10; i++) { //Generăm restul termenilor
        int aux = f1 + f2;
        f1 = f2;
        f2 = aux;
        cout << aux << " "; //Afișăm noul element generat
    }
    return 0;
}

Cuprinsul lecției

Se încarcă…

Citește și

Inversarea unui șir de caractere în C++Radicalul unui număr în C++ (rădăcina pătrată)Verifică dacă un bit de pe o anumită poziție este 1 sau 0 în C++CMMDC recursiv a două numere naturale în C++Transformarea unui număr din baza 2 în baza 10 în C++Recursivitate în C++Căutare binară în C++Cifra maximă a unui număr recursiv în C++Șirul lui Fibonacci în C++Află secolul unui an citit de la tastatură în C++Ciurul lui Eratostene în C++Suma divizorilor unui număr în C++Suma numerelor naturale dintr-un interval dat în C++Cel mai mic număr cu suma cifrelor N în C++Aria unui triunghi folosind coordonatele acestora în C++Transformarea unui număr din baza 10 în baza 2 în C++Suma 1 + 2 + 3 + ... + N în C++Algoritm recursiv pentru căutare binară (clasa a X-a)Matrice Fibonacci - al n-lea termen Fibonacci în timp logaritmicAplicații cu ciurul lui Eratostene în C++: suma divizorilor, numărul divizorilorOperații cu numere mari în C++ - Toate funcțiile explicateVerifică dacă un număr este par sau impar fără modulo în C++De ce cer unele probleme răspunsul modulo 666013 sau modulo 1.000.000.007?Verifică dacă o literă este mică sau mare în C++Pointer în C++. Variabile de tipul char * (char steluță)Suma elementelor unui vector recursiv în C++Complexitatea unui algoritm (timp și spațiu) în C++Citește un șir de caractere cu spații în C++Ce este o variabilă unsigned în C++?Transformarea unei litere mari în literă mică în C++Calculul combinărilor de n luate câte k (nCk) în C++Interclasarea a doi vectori în C++Valoarea absolută (modulul) unui număr în C++Cel mai puțin semnificativ bit în C++Aria și circumferința unui cerc în C++Sortare crescătoare recursivă în C++ - Merge sort și Bubble sortPrima cifră a unui număr în C++Al N-lea termen dintr-o progresie geometricăMaximul și minimul a două valori în C++Generarea șirului Fibonacci generalizat în C++Cifra maximă și minimă a unui număr în C++Instrucțiunea de decizie în C++: if, else, switch, caseCombinatorică în C++: permutări, aranjamente, combinări și alteleCum să calculezi instant 2 la puterea N în C++Tutorial instalare CodeBlocks (ușor) - Introducere în informatică C++Ridicarea la putere în timp logaritmic în C++. Exponențiere rapidăCe este o funcție void în C++?Verifică dacă un caracter este cifră în C++Numărul de divizori al unui număr în C++Cel mai mic/mare divizor prim al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Mediana unui șir de valori în C++Suma divizorilor numerelor de la 1 la N (Folosind ciurul lui Eratostene)Cifrele unui număr. Prelucrarea cifrelor unui număr în C++Cel mai mare divizor comun (CMMDC) a două numere în C++Vectori de frecvență (de apariții) în C++Afișarea elementelor unui vector recursiv în C++Verificarea unui an bisect în C++Instrucțiunea do while (structuri repetitive)Ce înseamnă endl în C++?Funcții în C++. Ce sunt subprogrameleCodul ASCII (tabel complet)Rădăcina cubică a unui număr în C++ (cube root)Structuri repetitive (while, do while, for, etc)Verificare număr prim în C++ (Clasa a IX-a)Cea mai lungă secvență de elemente crescătoare în C++Materia pentru olimpiada de informatică - tot ce trebuie să știiCel mai frecvent element dintr-un șir în C++Tipuri de date în C++: numere întregi, reale, caractere și alteleNumărul permutărilor în C++ (formula permutărilor)Verifică dacă un număr aparține șirului Fibonacci în C++Verifică dacă un număr dat este o putere de 2 în C++Instrucțiunea break (structuri repetitive)Comentarii în C++Distanța dintre două puncte în C++Ce înseamnă variabilă globală și locală în C++?Vectorii în C++: citire și afișareCum să afișezi partea întreagă a unui număr real în C++Citirea și afișarea matricelor în C++Divide et Impera (metodă de programare C++)Numărul de divizori al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Oglinditul unui număr în C++Afișarea divizorilor primi ai unui număr în C++Factorialul unui număr în C++Verifică dacă un caracter este literă în C++Maximul și minimul a trei valori în C++Matrice pătratice în C++. Diagonala principală și secundarăCum să citești și să afișezi în fișiere în C++Tipul struct în C++. Ce sunt structurile de date neomogeneIndicatorul lui Euler în C++Numărul aranjamentelor în C++ (formula aranjamentelor)Do while vs while în C++ - Care e diferența?Câte numere naturale sunt într-un interval dat? (C++)Interschimbarea a două variabile în C++ (3 metode)Transformarea unei litere mici în literă mare în C++Instrucțiunea while (structuri repetitive)Oglinditul recursiv al unui număr în C++Numărul de apariții al unui număr într-un vector în C++Funcții predefinite în C++ (matematice, șiruri de caractere)Cel mai semnificativ bit în C++Numărul combinărilor în C++ (formula combinărilor)Numărul de cifre ale factorialului unui numărMaximul și minimul a n valori în C++Indicatorul lui Euler al numerelor de la 1 la N (Folosind ciurul lui Eratostene)Numărul de divizori primi ai unui număr în C++Vectorii în C++: declarare și parcurgereInstrucțiunea continue (structuri repetitive)Numărul minim de peroane pentru o gară în C++Aflarea sumei primelor N sume GaussBordarea unei matrice în C++Verifică dacă o literă este vocală în C++Copiuțe: Cifrele unui numărMatrice în C++. Declararea și parcurgerea tablourilor bidimensionaleCifra de control a unui numărInversarea unui vector în C++Al N-lea termen Fibonacci în C++Șiruri de caractere în C++. Tot ce trebuie să știiVerificare dacă un număr este palindrom în C++Verifică dacă trei puncte sunt coliniare C++CMMMC a două numere în C++ (cel mai mic multiplu comun)Numere triunghiulare. Verificarea unui număr triunghiularAl N-lea termen dintr-o progresie aritmeticăMaximul și minimul unui vector în C++Verificare dacă șir de caractere este palindrom în C++Instrucțiunea for (structuri repetitive)

© Drepturi de autor

Echipa InfoAs își rezervă drepturile de autor pentru conținutul acestei pagini. Copierea conținutului fără acordul scris expres al InfoAs reprezintă o încălcare a Legii 8/1996 și va fi tratată ca atare.

Trimite lecția

Toată lecția

Doar videoclipul pe YouTube

Informatica devine ușoară cu InfoAs

Intră în cont