#include <stdio.h>

int main() {
    int n, fibs[46] = {1, 1};
    scanf("%d", &n);
    for (int i=2; i<n; ++i) {
        fibs[i] = fibs[i-1] + fibs[i-2];
    }
    printf("%d", fibs[n-1]);
    return 0;
}

定义占用 46*4 =184 字节的数组,可以不必递归