File tree Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Expand file tree Collapse file tree 2 files changed +60
-0
lines changed Original file line number Diff line number Diff line change 1+ /*
2+ * Author: Akshay Dubey (https://github.com/itsAkshayDubey)
3+ * Binomial Coefficient: https://en.wikipedia.org/wiki/Binomial_coefficient
4+ * function to find binomial coefficient of numbers n and k.
5+ * return binomial coefficient of n,k
6+ */
7+
8+ /**
9+ * @function findBinomialCoefficient
10+ * @description -> this function returns bonimial coefficient
11+ * of two numbers n & k given by n!/((n-k)!k!)
12+ * @param {number } n
13+ * @param {number } k
14+ * @returns {number }
15+ */
16+
17+ import { calcFactorial } from './Factorial'
18+
19+ export const findBinomialCoefficient = ( n , k ) => {
20+ if ( ( typeof n !== 'number' ) || ( typeof k !== 'number' ) ) {
21+ throw Error ( 'Type of arguments must be number.' )
22+ }
23+ if ( n < 0 || k < 0 ) {
24+ throw Error ( 'Arguments must be greater than zero.' )
25+ }
26+ let product = 1
27+ for ( let i = n ; i > k ; i -- ) {
28+ product *= i
29+ }
30+ return product / calcFactorial ( n - k )
31+ }
Original file line number Diff line number Diff line change 1+ import { findBinomialCoefficient } from '../BinomialCoefficient.js'
2+
3+ describe ( 'Testing findBinomialCoefficient function' , ( ) => {
4+ it ( 'should return 56' , ( ) => {
5+ const binomialCoefficient = findBinomialCoefficient ( 8 , 3 )
6+ expect ( binomialCoefficient ) . toBe ( 56 )
7+ } )
8+
9+ it ( 'should return 10' , ( ) => {
10+ const binomialCoefficient = findBinomialCoefficient ( 5 , 2 )
11+ expect ( binomialCoefficient ) . toBe ( 10 )
12+ } )
13+
14+ it ( 'should throw error when supplied arguments other than number' , ( ) => {
15+ expect ( ( ) => { findBinomialCoefficient ( 'eight' , 'three' ) } ) . toThrow ( Error )
16+ } )
17+
18+ it ( 'should throw error when n is less than zero' , ( ) => {
19+ expect ( ( ) => { findBinomialCoefficient ( - 1 , 3 ) } ) . toThrow ( Error )
20+ } )
21+
22+ it ( 'should throw error when k is less than zero' , ( ) => {
23+ expect ( ( ) => { findBinomialCoefficient ( 1 , - 3 ) } ) . toThrow ( Error )
24+ } )
25+
26+ it ( 'should throw error when n and k are less than zero' , ( ) => {
27+ expect ( ( ) => { findBinomialCoefficient ( - 1 , - 3 ) } ) . toThrow ( Error )
28+ } )
29+ } )
You can’t perform that action at this time.
0 commit comments