pythonn階楊輝三角 Python實現楊輝三角

2021-10-13 11:32:18 字數 1630 閱讀 5771

楊輝三角,是二項式係數在三角形中的一種幾何排列。在歐洲,這個表叫做帕斯卡三角形。帕斯卡(1623----1662)是在2023年發現這一規律的,比楊輝要遲393年,比賈憲遲600年。楊輝三角是中國古代數學的傑出研究成果之一,它把二項式係數圖形化,把組合數內在的一些代數性質直觀地從圖形中體現出來,是一種離散型的數與形的結合。 以下是楊輝三角的大概樣子,n=5

昨天一直在看傳智播客2023年的前端教程,昨天和今天也抽空研究了以下如何用python實現楊輝三角。 楊輝三角有以下幾點特性:

前提:每行端點與結尾的數為1.

每個數等於它上方兩數之和。

每行數字左右對稱,由1開始逐漸變大。

第n行的數字有n項。

第n行數字和為2n-1。

第n行的m個數可表示為 c(n-1,m-1),即為從n-1個不同元素中取m-1個元素的組合數。

第n行的第m個數和第n-m+1個數相等 ,為組合數性質之一。

每個數字等於上一行的左右兩個數字之和。可用此性質寫出整個楊輝三角。即第n+1行的第i個數等於第n行的第i-1個數和第i個數之和,這也是組合數的性質之一。即 c(n+1,i)=c(n,i)+c(n,i-1)。

(a+b)n的展開式中的各項係數依次對應楊輝三角的第(n+1)行中的每一項。

將第2n+1行第1個數,跟第2n+2行第3個數、第2n+3行第5個數……連成一線,這些數的和是第4n+1個斐波那契數;將第2n行第2個數(n>1),跟第2n-1行第4個數、第2n-2行第6個數……這些數之和是第4n-2個斐波那契數。

將各行數字相排列,可得11的n-1(n為行數)次方:1=11^0; 11=11^1; 121=11^2……當n>5時會不符合這一條性質,此時應把第n行的最右面的數字"1"放在個位,然後把左面的乙個數字的個位對齊到十位... ...,以此類推,把空位用「0」補齊,然後把所有的數加起來,得到的數正好是11的n-1次方。以n=11為例,第十一行的數為:1,10,45,120,210,252,210,120,45,10,1,結果為 25937424601=1110。

本來無從下手,但是研究了一種python解法終於實現:

def yanghui():

a = [1]

while true:

yield a

a = [sum(i) for i in zip([0] + a, a + [0])]

n = 0

for j in yanghui():

print(j)

n += 1

if n == 2:

break

下面,我來解釋以下這段**是什麼意思: 首先,定義乙個函式,然後定義乙個列表,a = [1] 然後就是while迴圈,yield生成器就不多說了。下面的其實也不用多說,主要是這句話:

a = [sum(i) for i in zip([0] + a, a + [0])]

a = [1]

a = [0,1]+[1,0] = [1,1]

a = [0,1,1]+[1,1,0]==[1,2,1]

a = [0,1,2,1]+[1,2,1,0]=[1,3,3,1]

a = [0,1,3,3,1]+[1,3,3,1,0]=[1,4,6,4,1]

這種解法非常巧妙,他利用zip打包兩個陣列,再利用2個0,錯位相加,從而實現了楊輝三角,解題者非常聰明,而我卻很笨,看了很久才明白。

python楊輝三角 楊輝三角I II

給定乙個非負整數 numrows,生成楊輝三角的前 numrows 行。在楊輝三角中,每個數是它左上方和右上方的數的和。示例 輸入 5 輸出 1 1,1 1,2,1 1,3,3,1 1,4,6,4,1 可以一行一行錯位加,當然這裡提供更簡便的方法。任取一行描述 1,2,1 如何得到 1,3,3,1 ...

Java 楊輝三角

public class yanghui 生成指定行數的楊輝三角形 param lines 楊輝三角形的行數 public void printyanghui int lines if lines 30 int line new int lines int maxlen getmaxlen line...

輸出楊輝三角

程式的版權和版本宣告部分 檔名稱 fibnacci.cpp 作 者 單虹毓 完成日期 2013 年 12 月 4 日 版本號 v1.0 輸入描述 無 問題描述 楊輝三角 程式輸出 1 第0列和對角線上的元素都為1。程式輸出 2 除第0列和對角線上的元素以外,其它元素的值均為前一行上的同列元素和前一列...