1.第一种方法是迭代,发现非常慢非常慢,大量重复计算,可见递归并不是什么高效的算法,我发现当求第50个的时候已经需要很长时间了,下面的代码测试的是计算第40个时间。
#include<iostream>
#include"MyTimer.h"
using namespace std;
long long conquer_fibonacci(long long A[],int n){ //递归法 很慢 很慢 ,大量的重复计算 可见递归并不是什么高效的算法 Ω(φ^n)
if(n==1){return A[n];}
else if(n!=2){
A[n]=conquer_fibonacci(A,n-1)+conquer_fibonacci(A,n-2);
return A[n];
}
else{
A[n]=A[0]+A[1];
return A[n];
}
}
int main(){
long long fibonacci[40];
fibonacci[0]=0;
fibonacci[1]=1;
int length=sizeof(fibonacci)/sizeof(long long );
int a[]={1,1,1,0};
MyTimer mt,mt2;
mt.Start();
conq