Harmonic series is inverse of a arithmetic progression. In general, the terms in a harmonic progression can be denoted as 1/a, 1/(a + d), 1/(a + 2d), 1/(a + 3d) …. 1/(a + nd).
As Nth term of AP is given as ( a + (n – 1)d). Hence, Nth term of harmonic progression is reciprocal of Nth term of AP, which is 1/(a + (n – 1)d), where “a” is the 1st term of AP and “d” is a common difference.
Method #1: Simple approach
C++
#include<bits/stdc++.h>
using namespace std;
double sum( int n)
{
double i, s = 0.0;
for (i = 1; i <= n; i++)
s = s + 1 / i;
return s;
}
int main()
{
int n = 5;
cout << "Sum is " << sum(n);
return 0;
}
|
C
#include <stdio.h>
double sum( int n)
{
double i, s = 0.0;
for (i = 1; i <= n; i++)
s = s + 1/i;
return s;
}
int main()
{
int n = 5;
printf ( "Sum is %f" , sum(n));
return 0;
}
|
Java
import java.io.*;
class GFG {
static double sum( int n)
{
double i, s = 0.0 ;
for (i = 1 ; i <= n; i++)
s = s + 1 /i;
return s;
}
public static void main(String args[])
{
int n = 5 ;
System.out.printf( "Sum is %f" , sum(n));
}
}
|
Python3
def sum (n):
i = 1
s = 0.0
for i in range ( 1 , n + 1 ):
s = s + 1 / i;
return s;
n = 5
print ( "Sum is" , round ( sum (n), 6 ))
|
C#
using System;
class GFG {
static float sum( int n)
{
double i, s = 0.0;
for (i = 1; i <= n; i++)
s = s + 1/i;
return ( float )s;
}
public static void Main()
{
int n = 5;
Console.WriteLine( "Sum is "
+ sum(n));
}
}
|
PHP
<?php
function sum( $n )
{
$i ;
$s = 0.0;
for ( $i = 1; $i <= $n ; $i ++)
$s = $s + 1 / $i ;
return $s ;
}
$n = 5;
echo ( "Sum is " );
echo (sum( $n ));
?>
|
Javascript
<script>
function sum(n)
{
let i, s = 0.0;
for (i = 1; i <= n; i++)
s = s + 1 / i;
return s;
}
let n = 5;
document.write( "Sum is " + sum(n));
</script>
|
Time Complexity : O(n) ,as we are traversing once in array.
Auxiliary Space : O(1) ,no extra space needed.
Method #2: Using recursion
C++
#include<bits/stdc++.h>
using namespace std;
float sum( float n)
{
if (n < 2)
return 1;
else
return 1 / n + (sum(n - 1));
}
int main()
{
cout << (sum(8)) << endl;
cout << (sum(10)) << endl;
return 0;
}
|
Java
import java.io.*;
class GFG
{
float sum( float n)
{
if (n < 2 )
return 1 ;
else
return 1 / n + (sum(n - 1 ));
}
public static void main(String args[])
{
GFG g = new GFG();
System.out.println(g.sum( 8 ));
System.out.print(g.sum( 10 ));
}
}
|
Python3
def sum (n):
if n < 2 :
return 1
else :
return 1 / n + ( sum (n - 1 ))
print ( sum ( 8 ))
print ( sum ( 10 ))
|
C#
using System;
class GFG
{
static float sum( float n)
{
if (n < 2)
return 1;
else
return 1 / n + (sum(n - 1));
}
public static void Main()
{
Console.WriteLine(sum(8));
Console.WriteLine(sum(10));
}
}
|
PHP
<?php
function sum( $n )
{
if ( $n < 2)
return 1;
else
return 1 / $n + (sum( $n - 1));
}
echo sum(8) . "\n" ;
echo sum(10);
?>
|
Javascript
<script>
function sum(n)
{
if (n < 2)
{
return 1
}
else
{
return 1 / n + (sum(n - 1))
}
}
document.write(sum(8));
document.write( "<br>" );
document.write(sum(10));
</script>
|
Output: 2.7178571428571425
2.9289682539682538
Time Complexity : O(n), as we are recursing for n times.
Auxiliary Space : O(n), due to recursive stack space, since n extra space has been taken.