Skip to content
Related Articles

Related Articles

Recursive program to find the Sum of the series 1 – 1/2 + 1/3 – 1/4 … 1/N
  • Last Updated : 19 Aug, 2020

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to find the value of 
// the given series
#include<bits/stdc++.h>
using namespace std;
  
// Recursive program to find the 
// value of the given series
float sumOfSeries(int i, int n, float s) 
{
    // Base case
    if (i > n )
        return s;
   
    // Recursive case
    else 
    {
   
        // If we are currently looking
        // at the even number
        if (i % 2 == 0) 
            s -= (float)1 / i;
   
        // If we are currently looking 
        // at the odd number
        else
            s+= (float)1 / i;
        return sumOfSeries(i + 1, n, s);
    }
}
  
// Driver code
int main()
{
       
    // cout<<sumOfSeries(1,3,0);
    float sum = sumOfSeries(1, 3, 0);
    printf("%f", sum);
    return 0;
}
   
// This code is contributed by Rohit_ranjan

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to find the value of 
// the given series
import java.util.*;
  
class GFG{
  
// Recursive program to find the 
// value of the given series
static float sumOfSeries(int i, int n, float s) 
{
      
    // Base case
    if (i > n)
        return s;
  
    // Recursive case
    else
    {
          
        // If we are currently looking
        // at the even number
        if (i % 2 == 0
            s -= (float)1 / i;
  
        // If we are currently looking 
        // at the odd number
        else
            s += (float)1 / i;
              
        return sumOfSeries(i + 1, n, s);
    }
}
  
// Driver code
public static void main(String[] args)
{
    float sum = sumOfSeries(1, 3, 0);
      
    System.out.printf("%f", sum);
}
}
  
// This code is contributed by Amit Katiyar

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python program to find the value of 
# the given series
  
# Recursive program to find the 
# value of the given series
def sumOfSeries(i, n, s) :
  
    # Base case
    if i>n :
        return s
  
    # Recursive case
    else :
  
        # If we are currently looking
        # at the even number
        if i % 2 == 0 :
            s-= 1 /
  
        # If we are currently looking 
        # at the odd number
        else :
            s+= 1 /
        return sumOfSeries(i + 1, n, s)
  
# Driver code
if __name__ == "__main__":
    print(sumOfSeries(1, 3, 0))

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to find the value of 
// the given series
using System;
class GFG{
  
// Recursive program to find the 
// value of the given series
static float sumOfSeries(int i, int n, float s) 
{
    // Base case
    if (i > n )
        return s;
  
    // Recursive case
    else
    {
  
        // If we are currently looking
        // at the even number
        if (i % 2 == 0) 
            s -= (float)1 / i;
  
        // If we are currently looking 
        // at the odd number
        else
            s += (float)1 / i;
        return sumOfSeries(i + 1, n, s);
    }
}
  
// Driver code
public static void Main()
{
    float sum = sumOfSeries(1, 3, 0);
    Console.Write(sum);
}
}
  
// This code is contributed by Code_Mech

chevron_right


Output: 

0.8333333333333333

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up
Recommended Articles
Page :