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

GeeksforGeeks has prepared a complete interview preparation course with premium videos, theory, practice problems, TA support and many more features. Please refer Placement 100 for details

My Personal Notes arrow_drop_up

Improved By : Sam007, jit_t, vt_m

Article Tags :
Practice Tags :

3

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