[RESOLVIDO]Encontrar o valor de H na serie H = 1-1/2+1/3+...+1/n*/

5 respostas
Janerson

Olá Galera me ajudem a encontrar um soluçao lógica para seguinte serie
H = 1-1/2+1/3+...+1/n...
preciso achar o valor de H mas por causa daquele menos -1/2, não consigo chegar a uma solução
ex: se eu entrar coo o numero de termos (n) = 1 o resultado seria 1
se eu entrar coo o numero de termos (n) = 2 o resultado seria 0.5
se eu entrar coo o numero de termos (n) = 3 o resultado seria 0.83 e assim por diante
o problema é justamente o segundo termo onde faz a divisão de um número negativo por 2.

/*Entrar com o número de termos da  série (n) e imprimir o valor de H, sendo:
H = 1-1/2+1/3+...+1/n*/

import java.util.Scanner;
import java.text.DecimalFormat;

public class Exercicio60{
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        DecimalFormat dc = new DecimalFormat("0.000");
        int n; double h=0, h1 = -0.5;
        System.out.print("Números de termos: ");
        n = in.nextInt();
        for(double i=1; i<=n; i++){
            h+=(1/i);
       
        }
        System.out.println("Valor de H: "+dc.format(h ));
    }
}

5 Respostas

A

Bom dia Janerson, vi sua lógica aqui e pela descrição do seu problema está faltando subtrair caso o valor de i seja 2.
Sua lógica esta sempre somando o resultado da divisão e na descrição do seu problema o resultado de 1/2 deve ser subtraído e não somado.

Janerson

aganhara:
Bom dia Janerson, vi sua lógica aqui e pela descrição do seu problema está faltando subtrair caso o valor de i seja 2.
Sua lógica esta sempre somando o resultado da divisão e na descrição do seu problema o resultado de 1/2 deve ser subtraído e não somado.

Entao esse é o problema coma faço para ele subtrair apenas -1/2 e depois somar a sequencia…lembrando q tenho que fazer isso usando o laço
ou seja so será subtraído no segundo looping do contador == 2, apos isso ele vai somar toda sequencia…mas como fazer isso?

A

Janerson:
aganhara:
Bom dia Janerson, vi sua lógica aqui e pela descrição do seu problema está faltando subtrair caso o valor de i seja 2.
Sua lógica esta sempre somando o resultado da divisão e na descrição do seu problema o resultado de 1/2 deve ser subtraído e não somado.

Entao esse é o problema coma faço para ele subtrair apenas -1/2 e depois somar a sequencia…lembrando q tenho que fazer isso usando o laço
ou seja so será subtraído no segundo looping do contador == 2, apos isso ele vai somar toda sequencia…mas como fazer isso?

Então, rs sua resposta está na pergunta. Pode ser resolvido desta forma:

for (double i = 1; i <= n; i++) h += (i == 2 ? - (1 / i) : (1 / i));

Janerson

aganhara:
Janerson:
aganhara:
Bom dia Janerson, vi sua lógica aqui e pela descrição do seu problema está faltando subtrair caso o valor de i seja 2.
Sua lógica esta sempre somando o resultado da divisão e na descrição do seu problema o resultado de 1/2 deve ser subtraído e não somado.

Entao esse é o problema coma faço para ele subtrair apenas -1/2 e depois somar a sequencia…lembrando q tenho que fazer isso usando o laço
ou seja so será subtraído no segundo looping do contador == 2, apos isso ele vai somar toda sequencia…mas como fazer isso?

Então, rs sua resposta está na pergunta. Pode ser resolvido desta forma:

for (double i = 1; i <= n; i++) h += (i == 2 ? - (1 / i) : (1 / i));

Vlw cara funfoou blza
fiz aqui tbm so que usei a condiçao if
vou deixar o meu código com o operador ternario, pois assim diminui as linha do código

A

:slight_smile: disponha

Criado 7 de maio de 2013
Ultima resposta 7 de mai. de 2013
Respostas 5
Participantes 2