csu 1087 斐波那契数列

晕,题目上描述是 N<=20,但是建个20大小的表,提交是WA,用递归提价一下AC了。

猜测是为了练习,不让大家偷懒。。

猜测测试数据最大的是21。。

为了偷懒,建了个25大小的表(注释部分),一提交果然AC,彻底晕倒了,要卡的话应该给个稍大一点的啊。。

当然如果特别大,时间限制也要改大一点,谅解了。。。

/* 1087: 斐波那契数列 */
//用递归法计算第N个斐波那契数,并输出所用到的递归次数
//斐波那契数列排列如下:1,1,2,3,5,8,……
# include <stdio.h>

int fun(int n, int *cnt);

//const int f[] = {0,1,1,2,3,5,8,13,21,34,55,89,144,233,377,610,987,1597,2584,4181,6765,
// 10946,17711,28657,46368,75025,121393,196418,317811,514229,832040};
//const int c[] = {0,1,1,3,5,9,15,25,41,67,109,177,287,465,753,1219,1973,3193,5167,8361,13529,
// 21891,35421,57313,92735,150049,242785,392835,635621,1028457,1664079};

int main()
{
int i;
int f, cnt;

// while (~scanf("%d", &i))
// printf("%d %d\n", f[i], c[i]);

// for (i = 21; i <= 30; ++i)
while (~scanf("%d", &i))
{
cnt = 0;
f = fun(i, &cnt),
printf("%d %d\n", f, cnt);
}

return 0;
}

int fun(int n, int *cnt)
{
if (n==1 || n==2)
{
++(*cnt);
return 1;
}
else
{
++(*cnt);
return fun(n-1, cnt) + fun(n-2, cnt);
}
}



你可能感兴趣的:(su)