楊輝三角是計算二項式乘方展開式的係數時必不可少的工具、是由數字排列而成的三角形數表。
效果如下圖:
資料:楊輝三角第n行的第1個數為1,第二個數為1×(n-1),第三個數為1×(n-1)×(n-2)/ 2,第四數為1×(n-1)×(n-2)/2×(n-3)/3…依此類推。
楊輝三角另外一個重要的特性就是每一行首尾兩個數字都是1、中間的數字等於上一行相鄰兩個數字的和、即排列組合中通常所運用的:
C(m,n) = C(m-1,n-1)+C(m-1,n)
根據以上性質、可以利用函數很輕鬆地將楊輝三角運算出來、函數接受一個參數、即希望得到楊輝三角的行數:
-
- function Pascal(n){ //楊輝三角,N為行數
- //
- }
-
複製程式碼
在這個函數中用兩個for迴圈進行巢狀、外層循環數為行數、內層迴圈為每行內的每一項:
-
-
- for( var i = 0 ; i for ( var j = 0 ; j }
- document.write("
") ;
}
複製程式碼
而每行每一個數字均為組合數C(m,n)、其中m為行號(從0算起)、n為在該行中的序號(從0算起)、即:
-
-
document.write(Combination(i,j)+" "); //引號裡面的內容是兩個html空格( )字元 複製程式碼
其中Combination(i,j)為計算組合數的函數、這個函數採用組合數的特性C(m,n) = C(m-1 ,n-1)+C(m-1,n)、對於這樣的特性、最有效的辦法就是遞歸:
-
-
- function Combination(m,n){
- if(n == 0) return 1; //每行第一個數為1
- else if(m == n) return 1; //最後一個數為1
- //其餘都是相加而來
- else return Combination(m-1,n-1)+Combination( m-1,n);
}
複製程式碼
js印出楊輝三角的完整程式碼:
|