楊輝三角斜列規律及與迴圈層數的關係

2021-10-21 12:16:07 字數 2145 閱讀 1552

一、楊輝三角簡介

楊輝三角,是二項式係數在三角形中的一種幾何排列,中國南宋數學家楊輝2023年所著的《詳解九章演算法》一書**現。在歐洲,帕斯卡(1623----1662)在2023年發現這一規律,所以這個表又叫做帕斯卡三角形。帕斯卡的發現比楊輝要遲393年,比賈憲遲600年。

楊輝三角是中國數學史上的乙個偉大成就。如圖所示:

二、楊輝三角斜列規律

定義斜列第一層為:1 2 3 4 5 6 . . .

則:第二層:1 3 6 10 15 21 28 36 . . .

第三層:1 4 10 20 35 56 84 . . .

第四層:1 5 15 35 70 126 . . .

那麼對於第m層的第n個數,將該數記為 (m)x(n),簡記為x(n),則有

(m)x(n) = a(n+m-1, m) / m !,即x(n) = a(n+m-1, m) / m !其中,a(n+m-1, m)為排列數,例如:a(5, 3) = 5 * 4 * 3 = 60

m !為m的階乘,例如:m = 4,m ! = 4 * 3 * 2 * 1 = 24

可自行檢驗上述資料,這裡舉出乙個:

第三層:1 4 10 20 35 56 84

由題可得:m = 3,可得公式:x(n) = a(n+2, 3) / 6

檢驗:

n = 1, x(1) = a(3, 3) / 6 = 3 * 2 * 1 / 6 = 1

n = 2, x(2) = a(4, 3) / 6 = 4 * 3 * 2 / 6 = 4

n = 3, x(3) = a(5, 3) / 6 = 5 * 4 * 3 / 6 = 10

…成立

三、特殊多層迴圈巢狀

for

(int i =

1; i <= n;

++ i)

​ 語句一;

當僅有乙個for()循壞時,語句一被執行的次數僅與n有關,這裡把語句一執行的頻數記為y,y與n的關係表示為:y(n) = …,這裡顯然 y(n) = n

for

(itn i =

1; i <= n;

++ i)

​ for

(int j =

1; j <= i;

++ i)

​ 語句一;

注意如果第二層迴圈判斷條件為 j <= n,那麼這顯然是乙個o(n^2)的演算法

y(n) = n * n,但不是這樣

這裡直接給出結論,語句一執行次數與迴圈層數的關係:

對於m層類似上述的迴圈巢狀,語句一執行次數與n的關係為:

y(n) = a(n+m-1, m) / m !

四、楊輝三角與特殊迴圈巢狀的聯絡

由此可見,楊輝三角與迴圈具有共同的公式,迴圈的層數對應楊輝三角斜列層數,對於不同n的值,也有斜列第n個數與之對應,舉例如下:

所以,例如嚴蔚敏《資料結構習題解析與實驗指導》,注:是習題冊

p4. 10,求

for

(int i =

1; i <= n;

++ i)

​ for

(int j =

1; j <= i;

++ j)

​ for

(int k =

1; k <= j;

++ k)

​ x ++

;

求x++這句執行的頻度

顯然,迴圈為3層,m = 3;

y(n) = a(n+m-1, m) / m! = n(n+1)(n+2) / 6,選 d

Python 楊輝三角的理解與寫法

近日到廖雪峰老師的部落格上學習的時候看到了一句python的generator,嘗試解析下 def s l 1 while true yield l l l 0 i 0 l i for i in range len l 1 接下來每句剖析 定義函式 s 初始化函式l 1 重點關注 l l 0 i 0...

利用js裡的迴圈來實現楊輝三角

先來看看要實現的效果圖!這是使用者手動輸入行數,假如是8行 這裡是顯示8行楊輝三角的內容!在這裡我將用到js中陣列的知識來完成,我將用二維陣列來儲存這個序列,其中外層陣列儲存所有的值,裡層陣列將儲存每一行的值。我的思路是 1.獲取使用者輸入要的行數。2.讓每行的第乙個元素為1,並且每行最後乙個元素為...

java列印可對齊的任意層數的楊輝三角形

package 列印楊輝三角 author zjluoc public class yanghui 列印對應層數lines的楊輝三角形 param lines 層數 public static void printyanghui int lines 接著計算從第三層開始那些由肩部兩端相加的和 for...