递归普通算法
template <typename Type>
Type fibonacci_1(int n,Type flag){
if(n<=1)return 1;
return fibonacci_1(n-1,flag)+fibonacci_1(n-2,flag);
}
递归免重复计算算法
template <typename Type>
Type fibonacci_4(int n,Type flag){
static Type fib[255]={0};
fib[0]=fib[1]=1;
if(n<=1)return 1;
if(fib[n]!=0)return fib[n];
fib[n]=fibonacci_4(n-1,flag)+fibonacci_4(n-2,flag);
return fib[n];
}
非递归公式计算
template <typename Type>
Type fibonacci_2(int n,Type flag){
return (Type)((pow((0.5+sqrt(5)/2),n+1)-pow((0.5-sqrt(5)/2),n+1))/sqrt(5)+0.5);
非递归递推算法
template <typename Type>
Type fibonacci_3(int n,Type flag){
if(n<=1)return 1;
else {
Type f,f_1=1,f_2=1;
for(int i=2;i<=n;i++){
f=f_1+f_2;
f_2=f_1;
f_1=f;
}
return f;
}
}