olá pessoal, sei quenao falta postes com esse assunto no guj… mas eu nao consegui entender nehun.
estou iniciando em java e estou com problemas para entender a logica do metodo recursivo, nao consigo execultar naca com esse metodo, e tem um exercicio na minha apostila que pede para min estudar sobre ele, se alguem tiver algo que me ajude…
agradeço desde já
Se é a definição que vc quer aí está, em java método é igual função.
Em ciência da computação, a recursividade é a definição de uma subrotina (função ou método) que pode invocar a si mesma.
Poste o código para ver se posso te ajudar melhor.
[quote=FabinhoGil] olá pessoal, sei quenao falta postes com esse assunto no guj… mas eu nao consegui entender nehun.
estou iniciando em java e estou com problemas para entender a logica do metodo recursivo, nao consigo execultar naca com esse metodo, e tem um exercicio na minha apostila que pede para min estudar sobre ele, se alguem tiver algo que me ajude…
agradeço desde já :)[/quote]
FabinhoGil,
Coloca o exercicio ai para que possamos te ajudar, coloque também o que você tentou fazer
minha apostila pede algo como
Fibonacci fibonacci = new Fibonacci();
for (int i = 1; i <= 6; i++) {
int resultado = fibonacci.calculaFibonacci(i);
System.out.println(resultado);
}
e ela diz que vai mostrar ate a sexta posição da sequencia!!!
mas nao intendii por que vai fazer isso…
na vdd nao consegui nen fazer este codigo para que compile corretamente!!!
abs; sei que precisa ter o resto da implementação do fibonacci.
FabinhoGil,
Da forma que você mencionou, não está sendo feita recursivamente, de uma olhada sobre recursividade neste link:
http://www.linhadecodigo.com.br/artigo/3316/recursividade-em-java.aspx
no qual a principal ideia é que o método chame a si proprio na onde o mesmo tem uma condição de parada.
Aqui vai um exemplo de função recursiva para fibonacci:
Caso ainda esteja com dúvida poste o código novamente para que possamos ajudar.
recursividade é a capacidade de uma função chamar-se a si própria. (empilha os métodos e depois desempilha)
int recursao(x){
if (x <= 25) {
return recursao(x +1);
else{
return x;
}
}
então eu utilizo esse método assim:
resultado = recursao(20);
exemplo de processamento que o java faz para empilhar (leia de cima para baixo):
int recursao(x=20){
return recursao(20+1){
return recursao(21+1){
return recursao(22+1){
return recursao(23+1){
return recursao(24+1){ //aqui x ficou valendo 25
return x=25; // 25
}
}
}
}
}
}
quando chegou no 25, ela parou de se chamar, e começou a retornar o x=25, que vai ir voltando de baixo para cima:
resultado = 25; // resultado final (leia de baixo para cima)
return x=25 {
return x=25 {
return x=25 {
return x=25 {
return x=25 {
return x=25 {
}
}
}
}
}
}
tente fazer montar o empilhamento e desempilhamento deste método:
int recursao(x){
if (x <= 10) {
return recursao(x) + recursao(x);
else{
return x;
}
}
uso:
resultado = recursao(1) // Qual o resultado ?
outra maneira de entender, vá na sua IDE e coloque um marcador debug na segunda linha da função, peça para debugar step-by-step
“pelo que eu entendi na primeira implementação”
Deve ser algo como:
int recursao(x=1){
return recursao(1+1){
return recursao(2+2){
return recursao(4+4){
return recursao(8+8){ //aqui x ficou valendo 8
return x=8; // 8
}
}
}
}
}
mas esta com varios bugs ne
um ex e na linha do else que nao fechou a chave do if
}else{
}
e para definir a variavel dentro do metodo precisa de um int e o metodo pode ser void
void recursao(int x){
e aqui na minha implementação eu nao usei o return olha so se esta certo???
me corrija por favor…
public class Recursao{
void recursao(int x){
if (x <= 10) {
recursao(x+x);
System.out.println(x);
}
}
}
class RecTeste{
public static void main(String[] args){
Recursao rc = new Recursao();
rc.recursao(1);
}
}
muito obrigado as duas respostas me foram muito uteis…
tanto a implementação do douglaskd
como tbm os links do paulohms
vlw mesmo pessoal acho que da pra dizer que sei o que é recursao agora srsrsrrs [RESOLVIDO]
ate+