Recursive program to find the Sum of the series 1 – 1/2 + 1/3 – 1/4 … 1/N
Last Updated :
23 Apr, 2021
Given a positive integer N, the task is to find the sum of the series 1 – (1/2) + (1/3) – (1/4) +…. (1/N) using recursion.
Examples:
Input: N = 3
Output: 0.8333333333333333
Explanation:
1 – (1/2) + (1/3) = 0.8333333333333333
Input: N = 4
Output: 0.5833333333333333
Explanation:
1- (1/2) + (1/3) – (1/4) = 0.5833333333333333
Approach: The idea is to form a recursive case and base case in order to solve this problem using recursion. Therefore:
- Base Case: The base case for this problem is when we have calculated the sum till the value of N in the denominator. Therefore, we stop the recursion when the counter variable ‘i’ reaches the value N.
- Recursive Case: The recursive case for this problem is to find whether the denominator is an even or odd. This is because, clearly, for every odd number, the preceding sign is a ‘+’ and for every even number, the preceding sign is a ‘-‘. Therefore, we check whether the counter variable is an even or odd number and accordingly add or subtract the value. Then, the function is recursively called for the next value of the value ‘i’.
Below is the implementation of the above approach:
C++
#include<bits/stdc++.h>
using namespace std;
float sumOfSeries( int i, int n, float s)
{
if (i > n )
return s;
else
{
if (i % 2 == 0)
s -= ( float )1 / i;
else
s+= ( float )1 / i;
return sumOfSeries(i + 1, n, s);
}
}
int main()
{
float sum = sumOfSeries(1, 3, 0);
printf ( "%f" , sum);
return 0;
}
|
Java
import java.util.*;
class GFG{
static float sumOfSeries( int i, int n, float s)
{
if (i > n)
return s;
else
{
if (i % 2 == 0 )
s -= ( float ) 1 / i;
else
s += ( float ) 1 / i;
return sumOfSeries(i + 1 , n, s);
}
}
public static void main(String[] args)
{
float sum = sumOfSeries( 1 , 3 , 0 );
System.out.printf( "%f" , sum);
}
}
|
Python3
def sumOfSeries(i, n, s) :
if i>n :
return s
else :
if i % 2 = = 0 :
s - = 1 / i
else :
s + = 1 / i
return sumOfSeries(i + 1 , n, s)
if __name__ = = "__main__" :
print (sumOfSeries( 1 , 3 , 0 ))
|
C#
using System;
class GFG{
static float sumOfSeries( int i, int n, float s)
{
if (i > n )
return s;
else
{
if (i % 2 == 0)
s -= ( float )1 / i;
else
s += ( float )1 / i;
return sumOfSeries(i + 1, n, s);
}
}
public static void Main()
{
float sum = sumOfSeries(1, 3, 0);
Console.Write(sum);
}
}
|
Javascript
<script>
function sumOfSeries(i, n, s)
{
if (i > n)
return s;
else
{
if (i % 2 == 0)
s -= 1 / i;
else
s += 1 / i;
return sumOfSeries(i + 1, n, s);
}
}
let sum = sumOfSeries(1, 3, 0);
document.write(sum);
</script>
|
Output:
0.8333333333333333
Share your thoughts in the comments
Please Login to comment...