一、楊輝三角簡介
楊輝三角,是二項式係數在三角形中的一種幾何排列,中國南宋數學家楊輝2023年所著的《詳解九章演算法》一書**現。在歐洲,帕斯卡(1623----1662)在2023年發現這一規律,所以這個表又叫做帕斯卡三角形。帕斯卡的發現比楊輝要遲393年,比賈憲遲600年。
楊輝三角是中國數學史上的乙個偉大成就。如圖所示:
二、楊輝三角斜列規律
定義斜列第一層為:1 2 3 4 5 6 . . .那麼對於第m層的第n個數,將該數記為 (m)x(n),簡記為x(n),則有則:第二層:1 3 6 10 15 21 28 36 . . .
第三層:1 4 10 20 35 56 84 . . .
第四層:1 5 15 35 70 126 . . .
(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...