Informática, perguntado por luizadsantos15, 10 meses atrás

Crie uma função soma_harmonica(x) que calcule recursivamente a soma harmônica de x-1 elementos. O único parâmetro da função é x>= 1. (Python)
Sendo soma_harmonica(x) = 1/x + soma_harmonica(x-1)

Soluções para a tarefa

Respondido por GeBEfte
1

def soma_harmonica(x):

.....if x<1:

..........return 'Não podemos calcular s soma harmônica para x < 1'

.....elif x<2:

..........return 1

.....else:

..........return((1/x) + soma_harmonica(x-1))

num = int(input('Digite o valor de x: '))

print(soma_harmonica(num))

Obs.: Os pontos que precedem as linhas de programação não fazem parte do programa e devem ser desconsideradas, foram adicionados apenas para garantir a indentação do código no site.

Comentários:

--> Note que a condição "if x<1" foi colocada para garantir que não ocorra uma divisão por 0 (exceção) e também para limitar "x" a números positivos, já que a soma harmônica se dá para x≥1 . No entanto, caso seja garantida a correta utilização do programa, podemos retirar essa condição.

--> Quando temos "x≥2", temos a recursividade. Note que estamos somando o valor de 1/x com o resultado de soma_harmonica(x-1). Por sua vez, soma_harmonica(x-1) é feita a soma de 1/(x-1) com o resultado de soma_harmonica(x-2) e assim sucessivamente. Isso acontece até que seja chamada a soma_harmonica(1), quando retornamos o valor 1.

--> Foi deixado também um programa "principal" para testar a função (ultimas duas linhas), perguntando ao usuário o valor de "x" e mostrando na tela o valor da soma_harmonica para (x-1) termos.

Abaixo um exemplo do que acontece para x=3.

\begin{array}{c c c c c}\dfrac{1}{4}~+&amp;soma\_harmonica(4-1)&amp;\\&amp;\downarrow&amp;\\&amp;\dfrac{1}{3}~+&amp;soma\_harmonica(3-1)\\&amp;&amp;\downarrow&amp;\\&amp;&amp;\dfrac{1}{2}~+&amp;soma\_harmonica(2-1)&amp;\\&amp;&amp;&amp;\downarrow&amp;&amp;\\&amp;&amp;&amp;1\end{array}\\\\\\\Rightarrow~1~+~\dfrac{1}{2}~+~\dfrac{1}{3}~+~\dfrac{1}{4}~=~2,08333...

É importante destacar que a soma acontece na ordem que foi colocada (1 + 1/2 + 1/3 + 1/4) pelo modo como construímos a função de recursividade, ou seja, quando chegamos à soma_harmonica(1), há o retorno do valor 1 para a soma_harmonica(2) e assim sucessivamente até o ultimo termo.

\Huge{\begin{array}{c}\Delta \tt{\!\!\!\!\!\!\,\,o}\!\!\!\!\!\!\!\!\:\,\perp\end{array}}Qualquer~d\acute{u}vida,~deixe~ um~coment\acute{a}rio

Anexos:
Perguntas interessantes