C语言小蜜蜂问题,自己在编译器可行,但是提交超时,求问如何改?

图片说明#include
#include

int num(int count){

if(count>2)
    return (num(count-1)+num(count-2));
else
    return count;

}

int main() {

int N,a[50],b[50],count;
int i=0,j=0,roads;

scanf("%d",&N);
//INPUT
for(i=0;i<N;i++){
    scanf("%d%d",&a[i],&b[i]);
    if( 0<a[i] && a[i]<b[i] && b[i]<50)
        continue;
    else
        i--;
}
//OUTPUT
for(j=0;j<N;j++){
    count=b[j]-a[j];
    roads=num(count);
    printf("%d\n",roads);
}
return 0;

}

如苏小喵的给的那个网址。

如果a-b的绝对值相同的话,线路数是相同的,类似是一种情况

如果绝对值是1路线数是1 如果是2 路线数是2 如果是3 路线数是3.....

有两个位置可以走到最后一个位置,那么走到最后一个位置的路线数就是走到这两个位置的路线数的和,

递推过程出来了,递推公式很容易写出:

F(i) = F(i-1) + F(i-2)

这不就是一个斐波那契数列么?

先提前做好一个斐波那契数列的数组F,然后直接输出F[b-a]就OK了。

http://blog.csdn.net/qq_34594236/article/details/51779320