Ciąg liczb Fibonacciego

Definicja:

N-ta liczba Fibonacciego opisana jest następującym wzorem:
fibonacci wzor

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