水瓶座安琪儿 2013-12-01 12:52
浏览 867

关于斐波那契矩阵,用递归二分法。哪位大神帮忙看看哪里出问题了?

#include

#include

#include

#define MAX 100
using namespace std;

typedef struct fibo
{
int i1j1;
int i1j2;
int i2j1;
int i2j2;
}fibo;

fibo a[MAX];
fibo FIBO(int num);

fibo MUL(fibo x,fibo y)
{//x、y,2个矩阵相乘,
fibo w;
w.i1j1=x.i1j1*y.i1j1+x.i1j2*y.i2j1;
w.i1j2=x.i1j1*y.i1j2+x.i1j2*y.i2j2;
w.i2j1=x.i2j1*y.i1j1+x.i2j2*y.i2j1;
w.i2j2=x.i2j1*y.i1j2+x.i2j2*y.i2j2;
return w;

}
fibo FIBOMUL(fibo x,fibo y,fibo z,int num)
{
fibo r;
if(num<=2)
return((MUL(MUL(x,y),z)));
else
return(MUL(FIBO(num),FIBO(num)),z);

}
fibo FIBO(int num)
{
a[0].i1j1=a[0].i2j2=1; a[0].i1j2=a[0].i2j1=0;
a[1].i1j1=a[1].i1j2=a[1].i2j1=1; a[1].i2j2=0;
a[2].i1j1=2; a[2].i1j2=a[2].i2j1=a[2].i2j2=1;
fibo result=a[0];
if(num==1)
return a[1];
else if(num==2)
return a[2];
else{
if(num%2==1)
result=FIBOMUL(a[num/2],a[num/2],a[1],num/2);
else
result=FIBOMUL(a[num/2],a[num/2],a[0],num/2);
}
return result;
}

void main()
{
fibo x;
x=FIBO(8);
cout<<x.i1j1<<x.i1j2<<x.i2j1<<x.i2j2;
getchar();
getchar();

}

  • 写回答

0条回答

    报告相同问题?

    悬赏问题

    • ¥15 树莓派与pix飞控通信
    • ¥15 自动转发微信群信息到另外一个微信群
    • ¥15 outlook无法配置成功
    • ¥30 这是哪个作者做的宝宝起名网站
    • ¥60 版本过低apk如何修改可以兼容新的安卓系统
    • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
    • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
    • ¥50 有数据,怎么用matlab求全要素生产率
    • ¥15 TI的insta-spin例程
    • ¥15 完成下列问题完成下列问题