¿Cómo se puede memorizar un método Java recursivo?

Así que he creado este programa para construir diferentes cajas de escaleras. Esencialmente el problema es: dado un entero N, de cuántas maneras diferentes puede construir la escalera. Se garantiza que N es mayor que 3 y menor que 200. Cualquier paso anterior no puede ser mayor que el siguiente; de lo contrario, anula el propósito de la escalera.

Entonces dado N = 3 Puedes construir una escalera: 2 pasos y luego 1 paso después de eso

Dado N = 4 Puede construir una escalera: 3 pasos y luego 1 paso después de eso

Dado N = 5 Puede construir dos escaleras: 3 pasos y luego 2 pasos O 4 pasos y luego 1 paso.

Mi método está debajo y funciona, excepto que su tiempo de ejecución es demasiado lento. Así que estaba pensando en intentar hacer una memoria para el método, pero para ser honesto, no entiendo completamente cómo implementar esto. Si pudiera obtener ayuda sobre cómo hacerlo, sería genial.

public static void main(String [] args)
{
    System.out.println(answer(200));
}
public static int answer(int n) { 
    return bricks(1,n) -1;
}
public static int bricks(int height, int bricksLeft)
{
    if(bricksLeft == 0)
    {
        return 1;
    }
    else if(bricksLeft < height)
    {
        return 0;
    }
    else
    {
        return bricks(height +1, bricksLeft - height) + bricks(height +1, bricksLeft);
    }
}

Respuestas a la pregunta(2)

Su respuesta a la pregunta