InfoBook.ro ← Harta anului
Modul 07 · Generarea sistematică de secvențe
Modul 07 · Conținut 2.3

Construim liste, termen cu termen

De la secvențe simple cu proprietăți date, la termeni ai unor expresii matematice, până la șirul lui Fibonacci — rețeta e mereu aceeași: o buclă care construiește următorul termen după o regulă clară.

🎯 Obiectiv 1Generezi toate valorile dintr-un interval care respectă o proprietate (ex.: prime).
🎯 Obiectiv 2Calculezi termeni ai unor expresii cu un acumulator (sumă, produs).
🎯 Obiectiv 3Stăpânești șirurile recurente — Fibonacci cu doar două variabile.
1

Secvențe cu proprietăți date

Rețeta: parcurgi intervalul cu o buclă și testezi proprietatea pentru fiecare valoare. Exemplul-rege: numerele prime până la n.

n =
Apasă „Pas" — fiecare candidat e testat pe rând. 👆
Observă eficiența (moștenire din Modulul 03): testul de primalitate merge doar până la √x — d * d <= x — nu până la x. Cât de enormă e diferența? Pune-le la întrecere:

🏁 Cursa celor două metode — aceleași prime, muncă diferită

n =

Varianta 1 — divizori până la x − 1

împărțiri: 0

Varianta 2 — divizori până la √x

împărțiri: 0
bara arată cât din intervalul 2..n a fost verificat — ambele „motoare" fac același număr de împărțiri pe secundă 👆
2

Termeni ai unor expresii matematice

Când formula depinde de indice — 1 + 1/2 + 1/3 + … + 1/n — folosești un acumulator actualizat la fiecare pas.

n =
Fiecare pas adaugă termenul 1/i la suma parțială. 👆
Capcană C++: scrie suma += 1.0 / i; — cu 1.0! Altfel 1/i e împărțire întreagă și dă 0 pentru orice i > 1 (bug-ul clasic din Modulul 01).
3

Șiruri recurente: Fibonacci

Un șir recurent definește fiecare termen prin cei dinainte: f(n) = f(n−1) + f(n−2), cu f(0)=0, f(1)=1. Nu-ți trebuie vector — doar două variabile care „alunecă"!

termeni =
raportul f(n)/f(n−1) → converge spre φ = 1,618033… (numărul de aur)
a și b „alunecă" pe șir: a = termenul curent, b = următorul. 👆
De ce doar două variabile? Pentru următorul termen ai nevoie DOAR de ultimii doi. Trecutul mai vechi nu contează — deci nu-l păstrăm. Gândirea asta („ce e minimul de memorie necesar?") e eficiență pură.
4

Generatorul tău — alege regula

Aceeași rețetă, altă regulă. Alege una și privește secvența născându-se.

termeni =
alege o regulă 👆
Tema de gândire: pentru fiecare regulă din listă, scrie bucla C++ care o generează. Toate încap în 3–4 rânduri — dacă îți ia mai mult, recitește rețeta.
5

Fișa de sinteză

Generarea de secvențe, pe scurt.

Rețeta universală: buclă peste interval + test de proprietate SAU acumulator actualizat.
Proprietăți: pentru fiecare x din interval, verifici (ex. prim cu d·d ≤ x) și afișezi dacă trece.
Expresii: suma += 1.0/i — atenție la împărțirea întreagă din C++!
Recurențe: f(n) = f(n−1) + f(n−2) — păstrezi doar ultimii doi termeni, în a și b.
Șablonul Fibonacci: urm = a + b; a = b; b = urm; — ordinea atribuirilor contează!
Raportul f(n)/f(n−1) → φ ≈ 1,618 — numărul de aur, dovada că matematica se ascunde în cod.
Exersează pe pbinfo.ro:
#255 · ușoară

Fibonacci

Afișați în ordine primii n termeni ai șirului lui Fibonacci.

Rezolvă pe pbinfo.ro →
#423 · ușoară

Fibonacci1

Afișați termenii șirului lui Fibonacci mai mici sau egali cu n.

Rezolvă pe pbinfo.ro →
#256 · medie

FiboVerif

Verificați despre fiecare din n numere dacă e termen Fibonacci.

Rezolvă pe pbinfo.ro →
#806 · medie

Generare

Șir definit recurent cu paritate alternantă — subiect de BAC.

Rezolvă pe pbinfo.ro →
← anteriorModul 06 · Biblioteci urmează →Modul 08 · Structuri avansate