Ir ao conteúdo
  • Cadastre-se

Dúvida com função recursiva


haydrik

Posts recomendados

Estou com um problema em java (lógico estou na área de java).

Um exercício "simples" não estou conseguindo fazer os resultados baterem. Já fiz teste de mesa e tudo mais como é recursiva eu não consigo ver a manipulação da varial e não sei onde estou errando.

O código é


import javax.swing.JOptionPane;
public class EXFat02 {
public static void main (String args[]){
double n;

n = Double.parseDouble(JOptionPane.showInputDialog("Colocar um valor qualquer"));

System.out.println("A soma da divisão de n menos o contador é " +ffat(n));
}

static double ffat(double num){
double s = 0;
int cont = 0;

if (num - cont != 1){
s = (1 /(num - cont)) + (ffat(cont +1));
}
else {
s = (1/(num - cont));
return s;
}
return s;
}
}

Estou fazendo o valor da varial "n" como 3 para o teste de mesa.

Só que o valor que tem que ser é 1.833, no resultado final, mas está saindo 1.33.

Eu já não sei o porque isso está acontecendo, fiz teste de mesa, fluxograma e tudo mais mesmo assim quando eu passo o código ai para java os valores não batem, não sei porque.

Obs: Tem que ser uma recursiva chamando a si-mesma.

Coloquei o Valor de "n" como 3 e o resultado está dando 1.33, mas o certo é 1.83.

Se alguém puder me ajudar eu agradeço.

Link para o comentário
Compartilhar em outros sites

Colega,

Não entendi direito qual o objetivo do seu programa, mas é fácil perceber porque a resposta é 1.33.

Provavelmente seu erro é que não estás atulizando a variável cont ( que é sempre 0, e portanto inútil em todos os cálculos envolvendo ela).

Como não sei exatamente como é esse teu cálculo não sei ser mais específico.

Abraço

Link para o comentário
Compartilhar em outros sites

A lógica do exercicio é fazer S = 1/n + 1/(n-1) + ... 1/1 em recursiva

E o valor cont se não estivesse acumulando o resultado final teria 0,99

Não estou conseguindo entender seguindo o teste de mesa teria que ser:

s = 1 / (3 - 0) + ffat ( 1 ) resultado final 1,83

s = 1 / (3 - 1) + ffat ( 2 ) resultado final 1,33

s = 1 / (3 - 0) resultado final 1

Não é isso que está acontecendo, ninguém sabe me ajudar?

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!