e produce un error de desbordamiento de pila al usar la función recursiva de Fibonacci

Aquí está mi código y funciona bien con valores de 400 a 4000, pero una vez que se trata de 4mil, recibo errores de desbordamiento de pila.

¡Gracias por adelantado

public class Fib {
static int c=1,b=2;
static long sum1=0,sum2=0;

static long fib(long a){
if(a==1){
    return 1;
}
if(a==2){
    return 2;
}
else{
    return fib(a-1)+fib(a-2);
}

    }


    public static void main(String[] args){
sum2= fib(4000000);
    System.out.println("Sum %f" +sum2);
}
    }

Respuestas a la pregunta(6)

Su respuesta a la pregunta