2010-09-20 3 views
9

Есть ли формула для этой серии? Я думаю, что это гармоническое число в виде суммы (1/к) при к = 1 п1 + 1/2 + 1/3 + --- + 1/n =?

+9

Это относится, например, на http://math.stackexchange.com/ – You

+1

Не совсем - недостаточно продвинутый. – duffymo

+1

Ну, это не связано с программированием - это связано с математикой. – You

ответ

7

Как это harmonic series суммируется до n, вы ищете n го harmonic number, приблизительно дается γ + ln[n], где γ является Euler-Mascheroni constant.

Для малых n, просто вычислить сумму непосредственно:

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

Хотя рекурсивные решения выглядят элегантно, в этом случае это неуместно. – You

+2

Если число достаточно велико, вы получите переполнение стека, или вы добавите в основном нуль и не сильно измените значение. –

+0

Я полагал, что он будет использовать небольшие номера образцов – bevacqua