/*斐波那契数列矩阵解法*/
/*
T(n)=T(n-1)+T(n-2)
T(n) = T(n-1)+T(n-2) =1 1 T(n-1) = 1 1 1 1 T(n-2)
T(n-1) = T(n-1) =1 0 T(n-2) = 1 0 1 0 T(n-3)
*/
#include<iostream>
using namespace std;
int juzhen(int n)
{
int arr[2][2]={{1,1},{1,0}};
int res[2][2]={{1,1},{1,0}};
for(int i=0;i<n;i++)
{
int t1,t2,t3,t4;
t1=res[0][0]*arr[0][0]+res[0][1]*arr[1][0];
t2=res[0][0]*arr[0][1]+res[0][1]*arr[1][1];
t3=res[1][0]*arr[0][0]+res[1][1]*arr[1][0];
t4=res[1][0]*arr[0][1]+res[1][1]*arr[1][1];
res[0][0]=t1;
res[0][1]=t2;
res[1][0]=t3;
res[1][1]=t4;
}
return res[0][0];
}
int fei(int n)
{
if(n<=1)
return n;
else{
return juzhen(n-2);
}
}
int main()
{
for(int i=0;i<35;i++)
cout<<"第"<<i<<"个数的斐波那契数列的值为:"<<fei(i)<<endl;
return 0;
}
Fibonacci数列矩阵法
最新推荐文章于 2023-02-01 20:35:39 发布