Como um método Java recursivo pode ser memorizado?

Então, eu construí este programa para construir diferentes estojos de escadas. Essencialmente, o problema é: Dado um número inteiro N, quantas maneiras diferentes você pode construir a escada? N é garantido que é maior que 3 e menor que 200. Qualquer etapa anterior não pode ser maior que a etapa seguinte, caso contrário, ela derrota o objetivo da escada.

Então, dado N = 3 Você pode construir uma escada: 2 etapas e depois 1 etapa depois

Dado N = 4 Você pode construir uma escada: 3 etapas e depois 1 etapa a seguir.

Dado N = 5 Você pode construir duas escadas: 3 degraus e 2 degraus OU 4 degraus e depois 1 degrau.

Meu método está abaixo e funciona, exceto que o tempo de execução é muito lento. Então, eu estava pensando em tentar fazer uma memorização para o método, mas, para ser sincero, não entendo completamente como implementar isso. Se eu pudesse obter alguma ajuda sobre como fazer isso, seria ótimo.

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);
    }
}

questionAnswers(2)

yourAnswerToTheQuestion