Efficient Program to Compute Sum of Series 1/1! + 1/2! + 1/3! + 1/4! + .. + 1/n!

Given a positive integer n, write a function to compute sum of the series 1/1! + 1/2! + .. + 1/n!

A Simple Solution solution is to initialize sum as 0, then run a loop and call factorial function inside the loop.

Following is the implementation of simple solution.

C++

 // A simple C++ program to compute sum of series 1/1! + 1/2! + .. + 1/n! #include using namespace std;    //  Utility function to find int factorial(int n) {     int res = 1;     for (int i=2; i<=n; i++)        res *= i;     return res; }    // A Simple Function to return value of 1/1! + 1/2! + .. + 1/n! double sum(int n) {     double sum = 0;     for (int i = 1; i <= n; i++)         sum += 1.0/factorial(i);     return sum; }    // Driver program to test above functions int main() {     int n = 5;     cout << sum(n);     return 0; }

Java

 // A simple Java program to compute  // sum of series 1/1! + 1/2! + .. + 1/n! import java.io.*;    class GFG {            // Utility function to find     static int factorial(int n)     {         int res = 1;         for (int i = 2; i <= n; i++)         res *= i;         return res;     }            // A Simple Function to return value     // of 1/1! + 1/2! + .. + 1/n!     static double sum(int n)     {         double sum = 0;         for (int i = 1; i <= n; i++)             sum += 1.0/factorial(i);         return sum;     }        // Driver program      public static void main (String[] args)      {         int n = 5;         System.out.println(sum(n));     } }    // This code is contributed by Ajit.

Python3

 # Python3 program to compute sum of series # 1/1! + 1/2! + .. + 1/n!    # Function to find factorail of a number  def factorial(n):     res = 1     for i in range(2, n + 1):             res *= i     return res            # A Simple Function to return value  # of 1/1! + 1/2! + .. + 1/n! def sum(n):     s = 0.0            for i in range(1, n + 1):         s += 1.0 / factorial(i)     print(s)    # Driver program to test above functions n = 5 sum(n)    # This code is contributed by Danish Raza

C#

 // A simple C# program to compute sum  // of series 1/1! + 1/2! + .. + 1/n! using System;    class GFG {            // Utility function to find     static int factorial(int n)     {         int res = 1;         for (int i = 2; i <= n; i++)             res *= i;                        return res;     }            // A Simple Function to return value     // of 1/1! + 1/2! + .. + 1/n!     static double sum(int n)     {         double sum = 0;         for (int i = 1; i <= n; i++)             sum += 1.0/factorial(i);                        return sum;     }        // Driver program      public static void Main ()      {         int n = 5;                    Console.WriteLine(sum(n));     } }    // This code is contributed by Sam007.

PHP



Output:

1.71667

The time complexity of above solution is O(n * n!) which is huge.

An Efficient Solution can find the sum in O(n) time. The idea is to calculate factorial in same loop as sum. Following is the implementation of this idea.

C++

 // A simple C++ program to compute sum of series 1/1! + 1/2! + .. + 1/n! #include using namespace std;    // An Efficient Function to return value of 1/1! + 1/2! + .. + 1/n! double sum(int n) {     double sum = 0;     int fact = 1;     for (int i = 1; i <= n; i++)     {        fact *= i;         // Update factorial        sum += 1.0/fact;   // Update series sum     }     return sum; }    // Driver program to test above functions int main() {     int n = 5;     cout << sum(n);     return 0; }

Java

 // A simple Java program to compute  // sum of series 1/1! + 1/2! + .. + 1/n! import java.io.*;    class GFG {            // An Efficient Function to return      // value of 1/1! + 1/2! + .. + 1/n!     static double sum(int n)     {         double sum = 0;         int fact = 1;         for (int i = 1; i <= n; i++)         {             // Update factorial             fact *= i;                            // Update series sum             sum += 1.0/fact;          }         return sum;     }        // Driver program      public static void main (String[] args)      {         int n = 5;         System.out.println(sum(n));     } }    // This code is contributed by Ajit.

Python3

 # Python3 program to compute sum of series  # 1/1! + 1/2! + .. + 1/n!    # Function to return value of # 1/1! + 1/2! + .. + 1/n! def sum(n):     sum = 0     fact = 1        for i in range(1, n + 1):            # Update factorial         fact *= i             # Update series sum         sum += 1.0/fact         print(sum)    # Driver program to test above functions n = 5 sum(n)    # This code is contributed by Danish Raza

C#

 // A simple C# program to compute sum // of series 1/1! + 1/2! + .. + 1/n! using System;    class GFG {            // An Efficient Function to return      // value of 1/1! + 1/2! + .. + 1/n!     static double sum(int n)     {         double sum = 0;         int fact = 1;                    for (int i = 1; i <= n; i++)         {                            // Update factorial             fact *= i;                            // Update series sum             sum += 1.0 / fact;          }         return sum;     }        // Driver program      public static void Main ()      {         int n = 5;                    Console.WriteLine(sum(n));     } }    // This code is contributed by Sam007.

PHP



Output:

1.71667

My Personal Notes arrow_drop_up

Improved By : Sam007, jit_t, vt_m

Article Tags :
Practice Tags :

1

Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.