为什么没有数组越界还会有RE


#include
char a[2000];
#include
int tree(int begin,int end)
{
    char s=0;
    char i, j;
    if (begin == end) { printf("%c", a[begin] == '1' ? 'I' : 'B'); return  a[begin]-'0'; }
    i=tree(begin, (begin + end)/ 2);
    j=tree((begin + end) / 2 + 1, end);
    if (j != i)
    {
        printf("F");
        return 2;
    }
    else
    {
        switch (i)
        {
        case 0:printf("B"); return 0;
        case 1:printf("I"); return 1;
        case 2:printf("F"); return 2;
       }
    }
}
int main()
{
    int n=0,i=0;
    scanf("%d", &n);
    int k=1;
    for (int j = 0; j < n; j++)
    {
        k *= 2;
    }
    scanf("%s", a);
    tree(0, k-1);
    return 1;
}

题目中说输入最大为2^N,N<=10,我这里字符串数组a开了2000可还是会RE,这是因为什么啊 !

题目怎么说的,n是什么值?

题目在哪呢,放出来看
做题第一步是先审题
审题审不明白后面都白做

img