RXOERSGLT737B
Zdjęcie przedstawia słonecznik.

PYI_R_W14_M09 Ciąg Fibonacciego czyli jak rozmnażają się króliki 

Źródło: Jason Leung, domena publiczna.

Ciąg Fibonacciego – definicja

Ciąg Fibonacciego to ciąg złożony z liczb naturalnych o następujących cechach:

  • pierwszy element ciągu jest równy 0,

  • drugi element ciągu jest równy 1,

  • każdy kolejny element ciągu jest sumą dwóch elementów go poprzedzających.

Ciąg  Fibonacciego możemy również zdefiniować w następujący sposób:

Fn=01Fn-1+Fn-2 dla n=0dla n=1dla n>1

Ważne!

Pierwszy wyraz ciągu Fibonacciego ma numer (index) 0.

Przykład 1

Oto zapisana w postaci pseudokodu funkcja iteracyjna, która oblicza wyraz ciągu Fibonacciego o indeksie n:

Linia 1. funkcja iter podkreślnik fib otwórz nawias okrągły n zamknij nawias okrągły. Linia 2. jeżeli n znak równości znak równości 0 wykonaj dwukropek. Linia 3. zwróć 0. Linia 4. w przeciwnym razie jeżeli n znak równości znak równości 1 wykonaj dwukropek. Linia 5. zwróć 1. Linia 7. a znak równości 0. Linia 8. b znak równości 1. Linia 9. i znak równości 2. Linia 11. dopóki i otwórz nawias ostrokątny znak równości n wykonuj dwukropek. Linia 12. suma znak równości a plus b. Linia 13. a znak równości b. Linia 14. b znak równości suma. Linia 15. i znak równości i plus 1. Linia 16. zwróć b.

Na podstawie pseudokodu możemy zdefiniować w języku Python funkcję, która zwróci element ciągu o indeksie n. Przetestujmy jej działanie dla indeksu równego 5:

Linia 1. def iter podkreślnik fibonacci otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 2. if n znak równości znak równości 0 dwukropek. Linia 3. return 0. Linia 4. elif n znak równości znak równości 1 dwukropek. Linia 5. return 1. Linia 7. a znak równości 0. Linia 8. b znak równości 1. Linia 9. i znak równości 2. Linia 11. while i otwórz nawias ostrokątny znak równości n dwukropek. Linia 12. suma znak równości a plus b. Linia 13. a znak równości b. Linia 14. b znak równości suma. Linia 15. i znak równości i plus 1. Linia 16. return b. Linia 18. print otwórz nawias okrągły iter podkreślnik fibonacci otwórz nawias okrągły 5 zamknij nawias okrągły zamknij nawias okrągły.

Wywołując przedstawioną funkcję w pętli, wygenerujemy określoną liczbę elementów ciągu Fibonacciego:

Linia 1. def iter podkreślnik fibonacci otwórz nawias okrągły n zamknij nawias okrągły dwukropek. Linia 2. if n znak równości znak równości 0 dwukropek. Linia 3. return 0. Linia 4. elif n znak równości znak równości 1 dwukropek. Linia 5. return 1. Linia 7. a znak równości 0. Linia 8. b znak równości 1. Linia 9. i znak równości 2. Linia 11. while i otwórz nawias ostrokątny znak równości n dwukropek. Linia 12. suma znak równości a plus b. Linia 13. a znak równości b. Linia 14. b znak równości suma. Linia 15. i znak równości i plus 1. Linia 16. return b. Linia 18. ciag znak równości apostrof apostrof. Linia 19. for element in range otwórz nawias okrągły 10 zamknij nawias okrągły dwukropek. Linia 20. ciag plus znak równości str otwórz nawias okrągły iter podkreślnik fibonacci otwórz nawias okrągły element zamknij nawias okrągły zamknij nawias okrągły plus apostrof apostrof. Linia 21. print otwórz nawias okrągły ciag zamknij nawias okrągły.
Dla zainteresowanych
1
Polecenie 1

Możesz również przygotować funkcję zwracającą ciąg Fibonacciego jako listę dla dalszych obliczeń. Przygotuj taki kod.

Słownik

Fibonacci
Fibonacci

włoski matematyk, ur. ok. 1175 r., znany jako Leonardo Fibonacci, Filius Bonacci (syn Bonacciego), Leonardo Pisano (Leonardo z Pizy)

liczby naturalne
liczby naturalne

liczby całkowite nieujemne

matplotlib
matplotlib

biblioteka służąca do przedstawienia obrazów złożonych z punktów o współrzędnych x oraz y (wykresów, histogramów, rozkładów itp.); moduł matplotlib nie jest dostępny w standardowej instalacji Pythona; należy go zainstalować, korzystając z mechanizmu pip

przestrzeń nazw
przestrzeń nazw

(ang. namespace) miejsce w pamięci operacyjnej, w której jest przechowywana dana zmienna; najczęściej przestrzeń nazw jest związana z funkcją, a zmienne w niej używane są widoczne tylko w obrębie tej przestrzeni – jest to „zakres obowiązywania” tych zmiennych