1. Početna
  2. Tehnologija & Gadgeti
  3. Kako implementirati Fibonaccijev niz pomoću rekurzije u Pythonu?

Kako implementirati Fibonaccijev niz pomoću rekurzije u Pythonu?

Fibonacci niz je jedan od najpoznatijih matematičkih nizova, a njegovu jednostavnost i ljepotu često koriste programeri i matematičari. Ovaj niz počinje s brojevima 0 i 1, a svaki sljedeći broj u nizu je zbroj prethodna dva. Na primjer, prvi nekoliko brojeva u Fibonacci nizu je 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, i tako dalje. U ovom članku ćemo se fokusirati na implementaciju Fibonacci niza koristeći rekurziju u Python programskom jeziku, što je jedan od najpopularnijih jezika za razvoj softvera.

Rekurzija je tehnika koja se koristi kada funkcija poziva samu sebe kako bi riješila problem. U kontekstu Fibonacci niza, možemo definirati funkciju koja će izračunati n-ti broj u nizu pozivajući samu sebe za prethodna dva broja. Ovaj pristup je vrlo intuitivan, ali može biti neučinkovit za veće vrijednosti n zbog ponovljenih izračuna. Unatoč tome, rekurzivna implementacija je odlična za razumijevanje osnovne logike iza niza.

Prvo, definirajmo našu funkciju. Ovdje ćemo koristiti Python za implementaciju. Naša funkcija će primiti jedan argument, n, koji predstavlja poziciju u Fibonacci nizu koju želimo izračunati. Ako je n 0, funkcija će vratiti 0, a ako je n 1, funkcija će vratiti 1. U svim ostalim slučajevima, funkcija će pozvati samu sebe za n-1 i n-2, i zbrojiti te dvije vrijednosti.

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

Ova jednostavna funkcija omogućuje nam da izračunamo bilo koji broj u Fibonacci nizu. Na primjer, ako želimo izračunati peti broj u nizu, jednostavno pozivamo funkciju s argumentom 5.

print(fibonacci(5))  # Ispisuje 5

Međutim, kao što je već spomenuto, ova rekurzivna metoda nije najefikasnija. Kada se koristi za veće vrijednosti n, funkcija će izračunati iste vrijednosti više puta, što značajno povećava vrijeme izvršavanja. Na primjer, pozivajući fibonacci(40) može trajati jako dugo. Da bismo poboljšali učinkovitost, možemo koristiti memoizaciju, što je tehnika koja pohranjuje rezultate prethodnih izračuna kako bi se izbjeglo ponavljanje istih izračuna.

Pomoću memoizacije možemo modificirati našu funkciju na sljedeći način:

def fibonacci_memo(n, memo={}):
    if n in memo:
        return memo[n]
    if n == 0:
        return 0
    elif n == 1:
        return 1
    else:
        memo[n] = fibonacci_memo(n - 1, memo) + fibonacci_memo(n - 2, memo)
        return memo[n]

Ova verzija funkcije koristi rječnik za pohranu već izračunatih vrijednosti, čime se drastično smanjuje vrijeme izvršavanja. Sada možemo lako izračunati vrijednosti za veće n bez straha od dugog vremena čekanja.

Fibonacci niz nije samo matematički koncept; on se također koristi u različitim područjima, uključujući računalne znanosti, umjetnost, biologiju, ekonomiju i mnoge druge. Njegova prisutnost u prirodi, kao što su spirale u školjkama ili raspored latica cvijeća, čini ga fascinantnim predmetom za istraživanje. U programiranju, razumijevanje rekurzije i Fibonacci niza može poboljšati vaše vještine i pomoći vam u rješavanju složenijih problema.

U zaključku, Fibonacci niz pruža jednostavan, ali moćan primjer kako rekurzija može funkcionirati u Pythonu. Iako rekurzivna implementacija može biti neefikasna za velike brojeve, dodavanje memoizacije može značajno poboljšati performanse. Ova tehnika je ključna za optimizaciju kodova i rješavanje složenih problema. Ako ste zainteresirani za programiranje i želite naučiti više, Fibonacci niz je odlična polazna točka za razumijevanje rekurzije i osnovnih koncepata programiranja.

Was this article helpful?

Related Articles

Leave a Comment