斐波那契数列(递归和动态规划)

 
 
 
 
#include <iostream>  

using namespace std;
long long F[65];
long long fibonacci(int n) //递归 明显很慢  
{//第43项一秒,67项一天,92项三世纪  
	return (n < 2) ? n : fibonacci(n - 1) + fibonacci(n - 2);
}

long long fibo(int n)//改进后的递归,动态规划思想
{
	if (F[n] > 0)return F[n];
	return F[n] = ((n < 2) ? n : fibo(n - 1) + fibo(n - 2));
}

long long fib(int n) //动态规划  
{
	long long t = 0, g = 1;
	while (n--)
	{
		g = g + t;
		t = g - t;
	}
	return t;
}

int main()
{
	/*for (int i = 0; i < 64; i++)
		cout << "fibonacci " << i + 1 << ": " << fibonacci(i) << endl;*/
	for (int i = 0; i < 64; i++)
		cout << "fibonacci " <<i+1<<": "<< fibo(i) << endl;
	for (int i = 0; i < 64; i++)
		cout << "fibonacci " << i + 1 << ": " << fib(i) << endl;
	return 0;
}


猜你喜欢

转载自blog.csdn.net/dzydzy7/article/details/80412432