Related Articles

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

• Difficulty Level : Easy
• Last Updated : 10 Oct, 2021

Given a positive integer n, write a function to compute the sum of the series 1/1! + 1/2! + .. + 1/n!
A Simple Solution is to initialize the sum as 0, then run a loop and call the factorial function inside the loop.
Following is the implementation of a simple solution.

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.

## 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 factorial 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

 ``

## Javascript

 ``

Output:

`1.71667`

The time complexity of the 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 the same loop as the 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

 ``

## Javascript

 ``

Output:

`1.71667`