Como resolver essa questão de java?

Olá, sou iniciante e na faculdade recebi essa questão:
Faça um programa que leia um valor n, inteiro e positivo, calcule e moste a seguinte soma:

S = 1 + 1/2 + 1/3 + 1/4 ... + 1/n

O problema é que eu não consegui interpretar essa questão direito. Achei essa resolução na internet:

for(i = 1; i <= n; i ++){ 
 resultado+= 1/n; 
}

Mas não entendi, eu sei como os códigos funcionam mas eu queria interpretar a questão e o código. Alguém pode me ajudar? Peço desculpas pelo meu nível de conhecimento básico, espero poder melhorar.

i = 1 (inicia no 1, assim o numero será positivo)

ii++ (vai somando sempre 1 cada vez que entrar no for, portanto o valor de N será inteiro).

Assim sempre que passar pela estrutura de repetição, o valor de N ira somar 1, ficando 2,3,4,5…N.

Quando comecei eu tinha dificuldades tbm, aprendi com um professor “teste de mesa”.

Ajudou bastante no inicio.

Espero ter ajudado.

1 curtida

for é um laço de repetição, então ele serve para repetir determinada ação um número X de vezes estabelecido pelo programador ou usuário.

Nesse caso o for vai atuar incrementando a variável " i " (essa resolução não atende ao seu problema) até chegar no valor determinado em “n”, então se n = 10, o i vai receber os valores (1, 2, 3, 4, 5, 6, 7, 8, 9, 10) e chegando a condição de i<=n, ele vai parar o laço de repetição.

A resolução para a sua questão na parte do for, você deve substituir o n por i na divisão, para que seja divido por vários números i e não somente por um fixo n.

for(i = 1; i <= n; i++) {
      resultado += 1/i;
}
1 curtida

Da forma que você implementou não vai funcionar pois você está dividindo 1 por i, e i é um número inteiro.
Por exemplo 1/2 vai retornar 0, pois, em Java, qualquer número dividido por um tipo inteiro, gera um resultado inteiro.
Você poderia fazer assim:

double resultado = 0;
for (int i = 1; i <= n; i++) {
    resultado += 1 / (double) i;
}

Agora se você quiser deixar seu professor orgulhoso, implemente um algoritmo que ache o Mínimo Múltiplo Comum de n e então faça o cálculo.
:slight_smile:

2 curtidas

pode ser observado que o divisor sempre está sendo incrementado 1 , até o valor n ,que no caso seria sua entrada;
a cada iteração do laço de repetição “for” será incrementado 1 à variável i , portanto esta variável que deve ser o seu divisor ficando assim:

for(i = 1; i <= n; i ++){
resultado+= 1/i;
}
é a forma mais correta, e a variável resultado está servindo se somatório

a sentença resultado+= 1/i; é equivalente à resultado = resultado + 1/i; ou seja sempre vai somando, espero ter ajudado

1 curtida

Obrigado pela ajuda e perdão pela demora de resposta. Um abraço!!

Valeu brother, um abraço!!

1 curtida

Obrigado pela resposta!! Um abraço!

Valeu irmão!! Um abraço!