一个关于Fibonacci的算法,不知道出错在哪里
#include "stdio.h"#define true 1
#define false 0
typedef int keytype;
typedef int datatype;
typedef struct{
keytype key;
datatype other;
}rectype;
int fibonacci(n)
int n;
{ if(n==0)
return(0);
else
if(n==1)
return(1);
else
return (fibonacci(n-1)+fibonacci(n-2));
}
int fibosrch(rectype R[],keytype k,int n)
{ int i,p,q,s,t,flag1,flag2;
i=fibonacci(n-1);
p=fibonacci(n-2);
q=fibonacci(n-3);
s=n+1-(i+p);
if(k>R[i].key)
i=i+s;
flag1=false;
while((i)&&(!flag1))
{ if(R[i].key==k)
flag2=1;
else
if(R[i].key<k)
flag2=2;
else
if(R[i].key>k)
flag2=3;
switch(flag2)
{case 1:flag1=true;
break;
case 2:if(q==0)
i=0;
else
{i=i-q;
t=p;
p=q;
q=t-q;
}
break;
case 3:if(p==1)
i=0;
else
{ i=i+q;
p=p-q;
q=q-p;
}
break;
default;
}
}
return (i);
}
int main()
{ int a,i,k;
rectype R[15];
scanf("%d",&k);
for(i=1;i<=15;i++)
scanf("%d",R[i].key);
a=fibosrch(R,k,15);
printf("%d",a);
return 0;
}
代码是按照课本原样输入的,不知道怎么改了。。到底到底哪里出错。。