关于字符串程序死机问题


int fun(int i)
{
    if(i==1)
    {
        return 1;
    }else{
        return fun(i-1)+(2*i-1)*2;
    }
}
int main(void)
{
    int n,i,j,k;
    scanf("%d",&n);
    for(i=1;iif(fun(i)>n)
        {
            break;
        }
    }
    k=i-1;
    for(i=0;i<2*k-1;i++)
    {
        if(i<((2*k)-1)/2)
        {
            for(j=0;j" ");
            }
            for(j=2*(k-i)-1;j>0;j--)
            {
                printf("*");
            }
        }else if(i==((2*k-1)/2))
        {
            for(j=i;j>0;j--)
            {
                printf(" ");
            }
            printf("*");
        }

    } 
    printf("%d",n-fun(k));
    return 0;
}

为什么会死机呢?

你这代码和字符串的关系是??????
当输入1时,程序会崩溃,因为k值为0,fun(0)死循环递归
输入大于1,应该没问题啊