Dúvida simples código Java

Código visto na W3schools, em estudos básicos de Java. Basicamente, considerando que start = 5 e end = 10, calculei o valor do return abaixo do IF como 10 + (5 + 10 - 1) = 24, porém o resultado deu 45. Alguém pode explicar o que interpretei errado?

Fonte: https://www.w3schools.com/java/tryjava.asp?filename=demo_recursion2

Código:

public class Main {
  public static void main(String[] args) {
    int result = sum(5, 10);
    System.out.println(result);
  }

  public static int sum(int start, int end) {
    if (end > start) {
      return end + sum(start, end - 1); 
    } else {
      return end;
    }
  }
}

Você esqueceu que a função é recursiva.
Enquanto o end for maior que o start, o retorno da função será o valor de end mais o resultado da chamada recursiva com o parâmetro end - 1

sum(5, 10) =
    return 10 + sum(5, 9) =
        return 9 + sum(5, 8) =
            return 8 + sum(5, 7) =
                return 7 + sum(5, 6) =
                    return 6 + sum(5, 5) =
                        return 5

Agora se você somar os resultados das chamadas recursivas, vai obter 45.

Valeu, obrigado bro!

1 curtida