我想就用斐波拉契数列的那个公式来算,为什么会部分正确呢

img

img

#include<stdio.h>
int main()
{
    int a;
    scanf("%d",&a);
    float f[a];
    f[0]=f[1]=1;
    int i;
    for(i=0;i<a;i++)
    {
        f[i+2]=f[i]+f[i+1];
    }
    printf("%0.2f",f[a-1]);
    return 0;
}

修改如下,供参考:

#include <stdio.h>
#include <malloc.h>
int main()
{
    int a;
    scanf("%d", &a);
    //float f[a];
    double* f = (double *)malloc(sizeof(double) * a);
    f[0] = f[1] = 1;
    int i;
    for (i = 2; i < a; i++) //for (i = 0; i < a-1; i++)
    {
        f[i] = f[i - 1] + f[i - 2];  //f[i+2]=f[i]+f[i+1];
    }
    printf("%0.2f", f[a-1]);
    free(f);
    return 0;
}