Definicja:
N-ta liczba Fibonacciego opisana jest następującym wzorem:
Tajemniczy ciąg Fibonacciego. Złota liczba. Boska proporcja.
Koniecznie obejrzyj ZANIM zaczniesz kodować :)
Koduj sam, ale film może Ci pomóc zrozumieć:
Przykładowy kod programu w C++ z wykorzystaniem funkcji opartej o iterację i rekurencję:
UWAGA. Ze względu na zakres typu int poniższy program poprawnie wyznaczy co najwyżej 46 elementów ciągu Fibonacciego.
#include <iostream> using namespace std; //iteracyjnie int fibI(int n){ int i, p1, p2, wynik; if(n<3) wynik=1; else { p1=1; p2=1; for(i=3; i<=n; i++){ wynik=p1+p2; p2=p1; p1=wynik; } } return wynik; } //rekurencyjnie int fibR(int n){ if(n<3) return 1; else return fibR(n-1)+fibR(n-2); } int main() { int ile, j; cout << "ile elementow ciagu Fibonacciego wyswietlic (<=46): "; cin >> ile; cout << "\nIteracyjnie:\n"; for(j=1; j<=ile; j++) cout << fibI(j) << " "; cout << "\nRekurencyjnie:\n"; for(j=1; j<=ile; j++) cout << fibR(j) << " "; return 0; }
Wersja pozwalająca policzyć więcej elementów i wyznaczyć złotą liczbę FI:
- dodatkowa biblioteka: iomanip
- setprecision(n) - ustawienie wyświetlenia ilości cyfr danej liczby zmiennoprzecinkowej
- long double - "największy" typ liczbowy w C++
Przykładowy kod programu w C++:
#include <iostream> #include <iomanip> using namespace std; //iteracyjnie long double fibI(int n){ int i; long double p1, p2, wynik; if(n<3) wynik=1; else { p1=1; p2=1; for(i=3; i<=n; i++){ wynik=p1+p2; p2=p1; p1=wynik; } } return wynik; } int main() { int j; cout << "Ostatni wyraz ciagu, ktory mozemy policzyc to fib(23601):\n"; cout << "fib(23601)=" << setprecision(5000) << fibI(23601); cout << "\n\nOsiagalne przyblizenie zlotej liczby:\n"; cout << "FI=" << setprecision(5000) << fibI(23601)/fibI(23600); cout << "\n\nKolejne przyblizenia liczby FI:\n"; for(j=2; j<=30; j++) cout << setprecision(15) << fibI(j)/fibI(j-1) << " "; return 0; }
Wykorzystanie kodów
- Powyższy kod można wykorzystać w środowisku Dev C++ lub innym. Wystarczy utworzyć nowy projekt i wkleić ten kod zamiast istniejącego.
- Można też użyć kodu na jednej ze stron WWW z kompilatorami on-line, na przykład na stronie: www.cpp.sh