2010-09-20 15 views
9

Y a-t-il une formule pour cette série? Je pense qu'il est un nombre harmonique sous une forme de somme (1/k) pour k = 1 à n1 + 1/2 + 1/3 + --- + 1/n =?

+9

Cela appartient à par exemple http://math.stackexchange.com/ – You

+1

Pas vraiment - pas assez avancé. – duffymo

+1

Eh bien, ce n'est pas lié à la programmation - c'est mathématique. – You

Répondre

7

Comme il est le harmonic series résume à n, vous cherchez la n e harmonic number, approximativement donnée par γ + ln[n], où γ est le Euler-Mascheroni constant.

Pour les petits n, calculer simplement la somme directement:

double H = 0; 
for(double i = 1; i < (n+1); i++) H += 1/i; 
1
function do(int n) 
{ 
    if(n==1) 
     return n; 

    return 1/n + do(--n); 
} 
+2

Alors que les solutions récursives semblent élégantes, dans ce cas, c'est inapproprié. – You

+2

Si le nombre est assez grand, vous aurez un débordement de pile, ou vous ajouterez zéro, et vous ne changerez pas beaucoup de valeur. –

+0

Je pensais qu'il utiliserait de petits nombres d'échantillons – bevacqua

Questions connexes