Definicja

Ciąg Fibonacciego jest to ciąg liczb naturalnych, w którym każdy wyraz jest sumą dwóch poprzednich (przy założeniu, że pierwszy wyraz jest równy 0, a drugi jest równy 1).

Pierwsze 10 liczb ciągu Fibonacciego

\( F_0 = 0 \\ F_1 = 1 \\ F_2 = 1 \\ F_3 = 2 \\ F_4 = 3 \\ F_5 = 5 \\ F_6 = 8 \\ F_7 = 13 \\ F_8 = 21 \\ F_9 = 34 \)

Zero jako pierwszy wyraz ciągu jest dyskusyjny, jednak ja pozostanę przy tej opcji.

Algorytm rekurencyjny

def fib(n):
    if n == 0: return 0
    elif n == 1: return 1
    return fib(n-1) + fib(n-2)

Algorytm iteracyjny

p - poprzedni wyraz (na początku równy zerowemu wyrazowi)
w - obecny wyraz (na początku równy pierwszemu wyrazowi)
Pętla for i in range(n-1) wykona się n-1 razy, czyli np. dla n=2 wykona się 1 raz.

def fib_i(n):
    if n == 0: return 0
    elif n == 1: return 1
    p, w = 0, 1
    for i in range(n-1):
        p, w = w, p+w
    return w