Ciąg Fibonacciego w C++. (Algorytm, kod źródłowy pod Visual Studio 2008)

Program liczy wyraz na n-tej pozycji w ciągu Fibonacciego, a także liczbę wywołań rekurencyjnych funkcji. Widać, że np. już przy liczeniu 50 wyrazu program drastycznie zwalnia z obliczeniami przez dużą liczbę wywołań rekurencyjnych. Projekt uruchamiany pod Visual Studio 2008. [code=cpp] // ciag_fibonacciego.cpp : Defines the entry point for the console application. // #include “stdafx.h” #include using namespace std; //========================================================= int suma; int fib(int n) { int liczba; if(n==0) { liczba = 0; } else if(n==1) { liczba = 1; } else { liczba = fib(n-1)+fib(n-2); } //cout<<liczba<<", "; suma += liczba; return liczba; }

Program liczy wyraz na n-tej pozycji w ciągu Fibonacciego, a także liczbę wywołań rekurencyjnych funkcji. Widać, że np. już przy liczeniu 50 wyrazu program drastycznie zwalnia z obliczeniami przez dużą liczbę wywołań rekurencyjnych.

Projekt uruchamiany pod Visual Studio 2008.

[code=cpp] // ciag_fibonacciego.cpp : Defines the entry point for the console application. //

#include “stdafx.h” #include

using namespace std;

//========================================================= int suma; int fib(int n) { int liczba;

if(n==0) {
	liczba = 0;
} else if(n==1) {
	liczba = 1;
} else {
	liczba = fib(n-1)+fib(n-2);
}

//cout<<liczba<<", ";

suma += liczba;
return liczba;

}

//========================================================= int wywolan;

int fibonacci(int n) { wywolan++; int fib; if(n==0) { fib=0; } else if(n==1) { fib=1; } else { fib=fibonacci(n-1)+fibonacci(n-2); } return fib; }

//=========================================================

int _tmain(int argc, _TCHAR* argv[]) { //fib(4); //cout«“nsuma: “«suma;

int n;
cout<<"Podaj liczbe: ";
cin>>n;
cout<<"nfib("<<n<<") = "<<fibonacci(n);
cout<<"nwywolan: "<<wywolan;

cout<<"nn";
system("pause");
return 0;

} [/code]