Everton, você viu que eu nem tentei começar a calcular o valor de x(6) diretamente, porque quando se trata de funções recursivas você tem de pensar ao contrário - você tem de pensar com os valores menores, onde a solução é mais simples, e depois partir para os valores maiores, que dependem dos valores menores.
Você tentou começar a calcular x(6) diretamente, e aí é que seu cérebro deu um nó. Nem eu tento fazer isso, porque dá um “stack overflow” na cabeça.
Eu calculei x(0), x(1) … até chegar a x(6).
O grande problema é que se você aprendeu a programar sozinho, é bem difícil pensar ao contrário.
Se você tiver um professor talvez também não aprenda direito isso (que em funções recursivas você tem de pensar ao contrário).
É que eles também não entenderam isso direito.
E foi por isso que eu mostrei como eu gostaria de ter aprendido.
Entanglement a lógica que vc passou eu comecei a entender ela, pq eu debuguei aqui no eclipse e quando ele retorna 0 ou seja quando ele entra no “else”, ele volta ai return do “if”.
olha só, vou tentar expor do jeito mais grosso possivel pra ver se vc consegue me ajudar.
[code]public static int x(int n) {
if (n > 2){
return 3+x(6-1); // 3 + o que? se ta chamando o método novamente? 5 é maior que 2? true! vai cair no return 3+x(5-1) o que aqui ele vai somar com 3 se ta chamando de novo o método? Então cairia no 3+ x(4-1), ai ele cairia 3+(3-1) e retornaria 0 e sairia do método.
}else
return 0;
}
[/code]
Enfim a recursão eu entendi nao entendo como ta somando o 3 se toda hora ele ta chamando o método pra fazer recursão. Se nao consigui me expor da melhor forma não esquentem nao rsrs.
Para entender esse método, é melhor usar uma notação mais “matemática”.
Espero que você não tenha alergia de matemática, como muita gente boa que eu conheço tem.
Nesse caso, seria assim:
x (n) = 0 se n <= 2.
x (n) = 3 + x (n - 1) se n > 2.
Aí você pega uma planilha Excel, e joga os dados lá, a partir de n = 0.
n = 0 -> x (n) = 0 porque 0 <= 2 .
n = 1 -> x (n) = 0 porque 1 <= 2.
e assim por diante. Não vou repetir tudo de novo.
Eu simplesmente nem tento ficar vendo essa parte do “fulano que chamou sicrano que chamou beltrano e que retornou blablebli” - isso é fatal para dar um nó na sua cabeça. Nem os matemáticos fazem isso.