C++实现斐波那契的多种解法

定义:斐波那契数列(Fibonacci sequence),又称黄金分割数列、因数学家列昂纳多·斐波那契以兔子繁殖为例子而引入,故又称为“兔子数列”,指的是这样一个数列:0、1、1、2、3、5、8、13、21、34、……在数学上,斐波纳契数列以如下被以递归的方法定义:F(0)=0,F(1)=1,......,F(n)=F(n-1)+F(n-2)(n≥2,n∈N*)。

#include <vector>
#include <iostream>
using namespace std;

//---------------------------------[向量法实现]--------------------------
int fibo1(const int n)
{
	vector<int>arr;
	arr.push_back(0);
	arr.push_back(1);
	for (int i = 2; i <= n; i++)
	{
		arr.push_back(arr[i - 1] + arr[i - 2]);
	}
	return arr[n];
}

//---------------------------------[递归]-----------------------------------
int fibo2(int n)
{
	if (n <= 1)  return n;
	else
		return fibo2(n-1)+ fibo2(n-2);
}

//---------------------------------[正向思维]-----------------------------
int fibo3(int n)
{
	if (n <= 1)  return n;
	else
	{
		int fn, fn1 = 1, fn2 = 0;
		for (int i = 2; i <= n; i++)
		{
			fn = fn1 + fn2;
			fn2 = fn1;
			fn1 = fn;
		}
		return fn;
	}
}
int main()
{
	cout << fibo1(7) << endl;
	cout << fibo2(7) << endl;
	cout << fibo3(7) << endl;
	getchar();
}

猜你喜欢

转载自blog.csdn.net/Tomxiaodai/article/details/79822356