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.8333333333333333Input: 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++
// 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 |
Java
// 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 |
Python3
# 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 / i # If we are currently looking # at the odd number else : s + = 1 / i return sumOfSeries(i + 1 , n, s) # Driver code if __name__ = = "__main__" : print (sumOfSeries( 1 , 3 , 0 )) |
C#
// 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 |
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.