How to calculate Space and time efficient Binomial Coefficient in Python

In this tutorial, we are going to write a program that helps us find Space and Time-efficient of a Binomial coefficient in Python.
The code should take two parameters and return the binomial coefficient.
For example, the code should accept two values which may be 16 and 4 and should return to 1820.
The standard calculation Algorithm follows the following binomial structure to give the desired result,

C(n, k) = n! / (n-k)! * k! = [n * (n-1) *....* 1] / [ ( (n-k) * (n-k-1) * .... * 1) * ( k * (k-1) * .... * 1 ) ]

 

After simplifying, we get C(n, k) = [n * (n-1) * .... * (n-k+1)] / [k * (k-1) * .... * 1] Also, C(n, k) = C(n, n-k)

We can change r to n-r if r > n-r

 

This standard procedure when encoded helps us calculate the coefficient with just a simple click.

Python program to calculate Space and time-efficient Binomial Coefficient

# Returns value of Binomial Coefficient 
# C(m, k)
def binomial_Coefficient(m, k):
  # C(m, k) = C(m, m - k)
  if(k > m - k):
    k = m - k
  #Result
  result = 1
  #Calculate
  for j in range(k):
    result = result * (m - j)
    result = result / (j + 1)
  return result

#Driver
m = 16
k = 4
res = binomial_Coefficient(m, k)
print("Value of C(%d, %d) is %d" %(m, k, res))

Output

Value of C(16, 4) is 1820

Leave a Reply

Your email address will not be published. Required fields are marked *