#include <stdio.h>
#include <string.h>
int main()
{
__int64 a[51];
int n,i;
a[0]=0;
a[1]=1;
for(i=2;i<=50;++i)
a[i]=a[i-1]+a[i-2];
while(scanf("%d",&n),n!=-1)
printf("%I64d\n",a[n]);
return 0;
}
嗯,很郁闷,不知道下面这个为什么不行
#include<stdio.h>
int fib(int n)
{
if(n<=1)
return n;
if(n<=4)
return n-1;
if(n==5)
return n;
return fib(n-5)*8+fib(n-6)*5;
}
int main()
{
int n;
while(scanf("%d",&n)!=EOF)
{
if(n < 0)break;
printf("%d\n",fib(n));
}
return 0;
}