#include<iostream>
using namespace std;
int main()
{
    int a, b=5, fib[46]={1,1,2,3,5};
    cin>>a;
    while(b<a)
    {
        fib[b]=fib[b-1]+fib[b-2];
        b++;
    }
    cout<<fib[a-1]<<endl;
}

千万不要取不存在的数,比如下标为负数的数列项
(其实是溢出项)

数列下标内的表达式不改变相关变量的值?