题目:
设计一函数,求Fibonacci(n)。
代码:
1.递归:
//计算斐波拉契数列
#include <iostream>
#include<ctime>
using namespace std;
int a = 0;
int function(int n);
int main()
{
clock_t start, finish;
double totaltime;
start = clock();
int n;
cout << "请问你想计算斐波拉契数列的第几项:";
cin >> n;
cout << endl << "斐波拉契数列的第" << n << "项为" << function(n) << endl;
cout << endl << "此程序一共调用了" << a << "次函数" << endl;
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << endl << "此程序的运行时间为" << totaltime << "秒" << endl << endl;
system("pause");
return 0;
}
int function(int n)
{
a = a + 1;
if (n == 0) return 0;
if (n == 1) return 1;
if (n >= 2) return function(n - 1) + function(n - 2);
}
2.动态规划:
//动态规划
#include <iostream>
#include <ctime>
using namespace std;
int b = 0;
int function(int n);
int main()
{
clock_t start, finish;
double totaltime;
start = clock();
int n;
cout << "请问你想计算斐波拉契数列的第几项:";
cin >> n;
cout << "斐波拉契数列的第" << n << "项为" << function(n) << endl;
cout << endl << "此程序一共调用了" << b << "次函数" << endl;
finish = clock();
totaltime = (double)(finish - start) / CLOCKS_PER_SEC;
cout << endl << "此程序的运行时间为" << totaltime << "秒" << endl;
system("pause");
return 0;
}
int function(int n)
{
b = b + 1;
if (n == 0) return 0;
if (n == 1) return 1;
if (n > 1)
{
int *a = new int[n + 1];
a[0] = 0;
a[1] = 1;
for (int i = 2; i <= n; ++i) a[i] = a[i - 1] + a[i - 2];
return a[n];
}
}