Funções recursivas e saída de código estranha

[quote=evertonsilvagomesjava]to entendendo dessa forma:

onde que é somado o 3? Isso que nao to enchergando pq pra mim ele iria fazendo recursão ate retornar 0.[/quote]

A função retorna um INT.

Sendo return 3+x(6-1);

Vai retornar 3 + o resultado da chamada x(6-1);

Você não teve lógica na facu/colégio?

[quote]A função retorna um INT.

Sendo return 3+x(6-1);

Vai retornar 3 + o resultado da chamada x(6-1);

Você não teve lógica na facu/colégio? [/quote]

LOL cara deixa pra la.

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.

Esta prova esta disponivel na net para qualquer um baixar?

Alguem sabe me indicar onde?

Nossa entenglament até que fim encherguei rsrs, cara mto obrigado pelas explicações e desculpa qualquer coisa.

[quote=ovelha]Esta prova esta disponivel na net para qualquer um baixar?

Alguem sabe me indicar onde?[/quote]

http://www.guj.com.br/posts/list/197092.java#988733

:oops: :oops: