Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Latest commit

 

History

History
History
 
 

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

Outline

Pascal's Triangle

In mathematics, Pascal's triangle is a triangular array of the binomial coefficients.

The rows of Pascal's triangle are conventionally enumerated starting with row n = 0 at the top (the 0th row). The entries in each row are numbered from the left beginning with k = 0 and are usually staggered relative to the numbers in the adjacent rows. The triangle may be constructed in the following manner: In row 0 (the topmost row), there is a unique nonzero entry 1. Each entry of each subsequent row is constructed by adding the number above and to the left with the number above and to the right, treating blank entries as 0. For example, the initial number in the first (or any other) row is 1 (the sum of 0 and 1), whereas the numbers 1 and 3 in the third row are added to produce the number 4 in the fourth row.

Pascal's Triangle

Formula

The entry in the nth row and kth column of Pascal's triangle is denoted Formula. For example, the unique nonzero entry in the topmost row is Formula example.

With this notation, the construction of the previous paragraph may be written as follows:

Formula

for any non-negative integer n and any integer k between 0 and n, inclusive.

Binomial Coefficient

Calculating triangle entries in O(n) time

We know that i-th entry in a line number lineNumber is Binomial Coefficient C(lineNumber, i) and all lines start with value 1. The idea is to calculate C(lineNumber, i) using C(lineNumber, i-1). It can be calculated in O(1) time using the following:

C(lineNumber, i)   = lineNumber! / ((lineNumber - i)! * i!)
C(lineNumber, i - 1) = lineNumber! / ((lineNumber - i + 1)! * (i - 1)!)

We can derive following expression from above two expressions:

C(lineNumber, i) = C(lineNumber, i - 1) * (lineNumber - i + 1) / i

So C(lineNumber, i) can be calculated from C(lineNumber, i - 1) in O(1) time.

References

Morty Proxy This is a proxified and sanitized view of the page, visit original site.