输出菲波那切数列的第n项,完全按照例子输入和输出结果,可是一直没有写对,哪位大神可以帮我解答一下?

斐波那契数列的定义为:

F1=1,F2=1,F(n)=F(n-2)+F(n-1)

请输出斐波那契数列的第n项。

Input
第1行的整数T表示测试数据的组数,后有T行测试数据,每行包含一个正整数n(n<=40)。

Output
对于每组测试数据,输出对应的F(n),每组单独占一行。

可以使用循环来实现求第n项的斐波那契数列的值。

代码如下:

参考链接:


https://www.cnblogs.com/sunfulv/p/13840810.html


#include <stdio.h>

// https://blog.csdn.net/qq_43452252/article/details/100937532
int fib(int n){
    
    int first,second;
    int fn;
    
    for(int i=1;i<=n;i++){
        
        if(i==1){ // 斐波那契第一项为1 
            first=1;
            fn=first;
        }else if(i==2){// 斐波那契第二项为1 
            second=1;
            fn=second;
        }else{ // 斐波那契其他项为前两项的和 
            int temp = first;
            first=second;
            second=fn;
            fn=first+second;
        }
        
            
    }
    
    return fn;
} 

int main(void){
    
    
    int T,n;
    scanf("%d",&T);
    
    for(int i=0;i<T;i++){
        
        scanf("%d",&n);
        // https://www.cnblogs.com/sunfulv/p/13840810.html
        printf("%d\n",fib(n));
    }
    
    return 0;
    
}

img