Find sum of the series 1! – 2! + 3! – 4! + 5! . . . till Nth term
Last Updated :
05 Aug, 2022
Given a positive integer N, the task is to find the sum of series 1! – 2! + 3! – 4! + 5!… till Nth term.
Examples:
Input: N = 6
Output: -619
Explanation: The sum of the series upto 5th term can be calculated as
1! – 2! + 3! – 4! + 5! -6! = 1 -2 +6 -24 +120 -720 = -619
Input: N = 5
Output: 101
Native Approach: The simplest way to solve this problem is to find the factorial of all numbers in the range [1, N] and calculate their sum with their respective positive and negative sign, i.e., odd position will be (+)ve and even position will be negative.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int factorial( int N)
{
if (N == 1) {
return 1;
}
return N * factorial(N - 1);
}
int SeriesSum( int N)
{
int Sum = 0;
for ( int i = 1; i <= N; i++) {
int fact = factorial(i);
int sign = fact;
if (i % 2 == 0) {
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
int main()
{
int N = 6;
cout << SeriesSum(N);
return 0;
}
|
Java
import java.util.*;
class GFG{
static int factorial( int N)
{
if (N == 1 )
{
return 1 ;
}
return N * factorial(N - 1 );
}
static int SeriesSum( int N)
{
int Sum = 0 ;
for ( int i = 1 ; i <= N; i++)
{
int fact = factorial(i);
int sign = fact;
if (i % 2 == 0 )
{
sign = sign * - 1 ;
}
Sum += sign;
}
return Sum;
}
public static void main(String args[])
{
int N = 6 ;
System.out.print(SeriesSum(N));
}
}
|
Python
def factorial(N):
if (N = = 1 ):
return 1
return N * factorial(N - 1 )
def SeriesSum(N):
Sum = 0
for i in range ( 1 , N + 1 ):
fact = factorial(i);
sign = fact;
if (i % 2 = = 0 ):
sign = sign * - 1
Sum + = sign
return Sum
N = 6
print (SeriesSum(N))
|
C#
using System;
class GFG{
static int factorial( int N)
{
if (N == 1)
{
return 1;
}
return N * factorial(N - 1);
}
static int SeriesSum( int N)
{
int Sum = 0;
for ( int i = 1; i <= N; i++)
{
int fact = factorial(i);
int sign = fact;
if (i % 2 == 0)
{
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
public static void Main()
{
int N = 6;
Console.Write(SeriesSum(N));
}
}
|
Javascript
<script>
function factorial(N) {
if (N == 1) {
return 1;
}
return N * factorial(N - 1);
}
function SeriesSum(N) {
let Sum = 0;
for (let i = 1; i <= N; i++) {
let fact = factorial(i);
let sign = fact;
if (i % 2 == 0) {
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
let N = 6;
document.write(SeriesSum(N));
</script>
|
Time Complexity: O(N2)
Auxiliary Space: O(N) for call stack because using recursion
Efficient Approach: The above solution can be optimized by maintaining the value of the factorial of the previous number and calculating the factorial of the current number using that value and calculating their sum with their respective positive and negative sign.
Below is the implementation of the above approach:
C++
#include <iostream>
using namespace std;
int SeriesSum( int N)
{
int Sum = 0, fact = 1;
for ( int i = 1; i <= N; i++) {
fact = fact * i;
int sign = fact;
if (i % 2 == 0) {
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
int main()
{
int N = 6;
cout << SeriesSum(N);
return 0;
}
|
Java
import java.util.*;
class GFG{
static int SeriesSum( int N)
{
int Sum = 0 , fact = 1 ;
for ( int i = 1 ; i <= N; i++) {
fact = fact * i;
int sign = fact;
if (i % 2 == 0 ) {
sign = sign * - 1 ;
}
Sum += sign;
}
return Sum;
}
public static void main(String[] args)
{
int N = 6 ;
System.out.print(SeriesSum(N));
}
}
|
Python3
def SeriesSum(N):
Sum = 0
fact = 1
for i in range ( 1 , N + 1 ):
fact = fact * i
sign = fact
if (i % 2 = = 0 ):
sign = sign * - 1
Sum + = sign
return Sum
if __name__ = = "__main__" :
N = 6
print (SeriesSum(N))
|
C#
using System;
public class GFG{
static int SeriesSum( int N)
{
int Sum = 0, fact = 1;
for ( int i = 1; i <= N; i++) {
fact = fact * i;
int sign = fact;
if (i % 2 == 0) {
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
public static void Main(String[] args)
{
int N = 6;
Console.Write(SeriesSum(N));
}
}
|
Javascript
<script>
function SeriesSum(N)
{
var Sum = 0, fact = 1;
for ( var i = 1; i <= N; i++) {
fact = fact * i;
var sign = fact;
if (i % 2 == 0) {
sign = sign * -1;
}
Sum += sign;
}
return Sum;
}
var N = 6;
document.write(SeriesSum(N));
</script>
|
Time Complexity: O(N)
Auxiliary Space: O(1)
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...