c语言递归,函数 斐波拉契函数问题

输入2以上的数字,则输出极大数?
标题
Fibonacci数列

类别
函数与递归

时间限制
2S

内存限制
1000Kb

问题描述
有一种形式的Fibonacci数列定义如下:
F(0)=7
F(1)=11
F(n)=F(n-1)+F(n-2)(n>=2)

按以下声明写一个函数fib
int fib(int n);
fib函数用来计算参数n对应的F(n)。
fib(n)的返回值是F(n)

输入说明
函数参数为一个整数n(0<=n<40)。

输出说明
函数返回值为整数,表示n对应的F(n)值。

输入样例
2

我所写的代码:


#include<stdio.h>

int main()
{
    int fib[40];
    int n,i;
    fib[0]=7;
    fib[1]=11;
    scanf("%d",&n);
    if(n>1)
    {
     
     for(i=2;i<=n;i++)
    {
        fib[i]=fib[i-1]+fib[i-2];
    }
    }
    else
    fib[i]=fib[n];
    
    printf("%d",fib[i]);
    return 0;
}

因为那个for循环已经把 i 加到最大了,所以最后输出的时候就是最大值