Dúvida com função recursiva

3 respostas
R

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.

O exercício é fazer S = 1/n + 1/(n-1) + … + 1/1

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

3 Respostas

R

UP - alguém pode me ajudar?

renato.marquez

Se é recursiva, ela chama a si mesma, rs. Brincadeirinha, mas não pude deixar escapar.

Bem, aparentemente o cálculo é simples. Eu fiz um aqui rapidinho e deu o resultado esperado. Dê uma olhada e confronte com o que você fez:
class Ex {    
    public static void main(String[] a) {
        System.out.println("Resultado: " + calcular(3d));
    }
    
    private static double calcular(double n) {
        if (n == 1) {
            return 1;
        } else {
            return (1 / n) + calcular(n - 1);
        }
    }
}
R

Serviu, vlws mesmo.

Entendi o que você e é mais rápido do seu jeito. vlws

Criado 14 de abril de 2012
Ultima resposta 16 de abr. de 2012
Respostas 3
Participantes 2