Entender esta Recursão

Viva,

Estou a fazer umas video aulas de Java. No entanto não estou a conseguir entender por nada esta recursão.

public class Recurse 
{
  public static void main(String[] args)
  {
    int x = 15;
    int triplex = triple3(x);
    System.out.println("x is " + x);
    System.out.println("x tripled is " + triplex);
  }
  
  public static int triple3(int n)
  {
    if(n == 0)
      return 0;
    else
    {
      return 3 + triple3(n - 1);
    }
  } 
}

O que esta recursão faz é o mesmo que "153 = 45", no entanto nem a fazer debug consigo perceber como é que este código faz o mesmo que 153…

Alguem me pode ajudar a entender isto?

Desde já obrigado.

Cumprimentos.

Vamos começar do 0.

triple3(0) calha no if e dá 0
triple3(1) calha no else e retorna 3 + triple3(0) que já vimos acima que vai calhar no if e dar 0, o que dá 3
triple3(2) calha no else e retorna 3 + triple3(1) que já vimos acima que vai calhar no else …

triple3(15) calha no else e retorna 3 + triple3(14) que por sua vez é 3 + triple3(13) … e continua somando 3 até chegar a 1 e no 0 para que a função não é chamada novamente. Na prática somaste 3 durante 15 vezes, o que dá 15*3.

Muito obrigado pela resposta. Tirou a minha dúvida.

Mais uma vez obrigado.