楊輝三角的簡單定義:楊輝三角,是二項式系數在三角形中的一種幾何排列。
楊輝三角的簡單性質:每個數等於它上方兩數之和。
每行數字左右對稱,由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。
楊輝三角的性質對其程序的編寫有着很大的作用,了解性質后就可以對其在java語言中的應用進行深化理解。
關鍵代碼分析:
首先需要輸入行數,在輸入行數值i前,先輸入入隊操作,因為作為最底部的1,可以看作是0+1,則輸入 s.enqueue(0)、s.enqueue(1),再輸入:int x = s.dequeue(); int y = s.frontqueue()訪問最先入隊的底部元素,以及計算出隊的元素,再由for (int j = 0; j < 2 * (n - i); j++) System.out.print(" ");
} else
System.out.print(x + " ");
來循環出值。
楊輝三角規則使用:
隊頭、隊尾元素值為1
當前數=上一個數+上一個數的前一個數
這個規則對應到代碼上就比較好實現了,先定義front和rear,輸入隊列長度的循環上限:
private int front, rear;
public SeqQueue(int length) {
if (length < 64)
length = 64;
this.element = new Object[Math.abs(length)];
this.front = this.rear = 0;
之后需要對每一行的元素進行賦值,根據先前輸入的隊列行值,進行循環。
使用debug調試時在length處設置結點,進行調試
單步追蹤程序排隊:
楊輝三角同樣可以通過簡單的數組循環來實現,這樣就比較基礎,通過隊列來循環可以在楊輝三角的編譯過程中使用元素的賦值和前后元素的相關性來檢驗本章關於隊列的學習,使用隊列循環來調試同樣可以更好地理解楊輝三角的循環方法和基本規則。