这个程序有什么问题?

程序目的是:2/1 3/2 5/3 8/5 13/8 21/13… 求出这个数列的前N项之和,保留两位小数。
我想用数组来做,但写出来这个程序只有前三个运行结果正常,到了第四个就没有运行结果了。

#include <stdio.h>

int main(int argc, char *argv[])
{
    int N,i,x,y;
    scanf("%d",&N);
    float a[]={2,3},b[]={1,2},sum=0;
    float c[100];
    for(i=0;i<N;i++)
    {
        if(i<2)
        {
            c[i]=a[i]/b[i];
        }    
    else if(i>=2)
        {
            x=i-1;
            y=i-2;
            a[i]=a[x]+a[y];
            b[i]=b[x]+b[y];
            c[i]=a[i]/b[i];
        }
    }
    for(i=0;i<N;i++)
    {
        sum+=c[i];
    }
    printf("%.2f\n",sum);
    return 0;
}


i = 2 的时候,a[i] b[i] 数组就已经内存泄漏了。