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.
C++
#include <iostream>
using namespace std;
int factorial( int n)
{
int res = 1;
for ( int i=2; i<=n; i++)
res *= i;
return res;
}
double sum( int n)
{
double sum = 0;
for ( int i = 1; i <= n; i++)
sum += 1.0/factorial(i);
return sum;
}
int main()
{
int n = 5;
cout << sum(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static int factorial( int n)
{
int res = 1 ;
for ( int i = 2 ; i <= n; i++)
res *= i;
return res;
}
static double sum( int n)
{
double sum = 0 ;
for ( int i = 1 ; i <= n; i++)
sum += 1.0 /factorial(i);
return sum;
}
public static void main (String[] args)
{
int n = 5 ;
System.out.println(sum(n));
}
}
|
Python3
def factorial(n):
res = 1
for i in range ( 2 , n + 1 ):
res * = i
return res
def sum (n):
s = 0.0
for i in range ( 1 , n + 1 ):
s + = 1.0 / factorial(i)
print (s)
n = 5
sum (n)
|
C#
using System;
class GFG {
static int factorial( int n)
{
int res = 1;
for ( int i = 2; i <= n; i++)
res *= i;
return res;
}
static double sum( int n)
{
double sum = 0;
for ( int i = 1; i <= n; i++)
sum += 1.0/factorial(i);
return sum;
}
public static void Main ()
{
int n = 5;
Console.WriteLine(sum(n));
}
}
|
PHP
<?php
function factorial( $n )
{
$res = 1;
for ( $i = 2; $i <= $n ; $i ++)
$res *= $i ;
return $res ;
}
function sum( $n )
{
$sum = 0;
for ( $i = 1; $i <= $n ; $i ++)
$sum += 1.0 / factorial( $i );
return $sum ;
}
$n = 5;
echo (sum( $n ));
?>
|
Javascript
<script>
function factorial(n)
{
let res = 1;
for (let i = 2; i <= n; i++)
res *= i;
return res;
}
function sum(n)
{
let sum = 0;
for (let i = 1; i <= n; i++)
sum += 1.0 / factorial(i);
return sum;
}
let n = 5;
document.write(sum(n).toFixed(5));
</script>
|
Output:
1.71667
Time complexity: O(n * n)
Auxiliary Space: O(1), since no extra space has been taken.
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++
#include <iostream>
using namespace std;
double sum( int n)
{
double sum = 0;
int fact = 1;
for ( int i = 1; i <= n; i++)
{
fact *= i;
sum += 1.0/fact;
}
return sum;
}
int main()
{
int n = 5;
cout << sum(n);
return 0;
}
|
Java
import java.io.*;
class GFG {
static double sum( int n)
{
double sum = 0 ;
int fact = 1 ;
for ( int i = 1 ; i <= n; i++)
{
fact *= i;
sum += 1.0 /fact;
}
return sum;
}
public static void main (String[] args)
{
int n = 5 ;
System.out.println(sum(n));
}
}
|
Python3
def sum (n):
sum = 0
fact = 1
for i in range ( 1 , n + 1 ):
fact * = i
sum + = 1.0 / fact
print ( sum )
n = 5
sum (n)
|
C#
using System;
class GFG {
static double sum( int n)
{
double sum = 0;
int fact = 1;
for ( int i = 1; i <= n; i++)
{
fact *= i;
sum += 1.0 / fact;
}
return sum;
}
public static void Main ()
{
int n = 5;
Console.WriteLine(sum(n));
}
}
|
PHP
<?php
function sum( $n )
{
$sum = 0;
$fact = 1;
for ( $i = 1; $i <= $n ; $i ++)
{
$fact *= $i ;
$sum += 1.0 / $fact ;
}
return $sum ;
}
$n = 5;
echo sum( $n );
?>
|
Javascript
<script>
function sum(n)
{
let sum = 0;
let fact = 1;
for (let i = 1; i <= n; i++)
{
fact *= i;
sum += 1.0 / fact;
}
return sum.toFixed(5);
}
let n = 5;
document.write(sum(n));
</script>
|
Output:
1.71667
Time complexity: O(n) since using a single loop
Auxiliary Space: O(1), since no extra space has been taken.
This article is contributed by Rahul Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.