杨辉三角
目录
笨方法
1
11
121
1331
........
可以知道它的规律是
每一行的第一个数和最后一个数都是1,
中间部分的值的规律a[i][j]=a[i-1][j-1]+a[i-1][j];(其中i代表的是行数,j代表的是哪一行的第几个数)。
int[][] arr = new int [rowIndex][rowIndex];
//rowIndex代表的是行数和列数
for(int i=0;i<rowIndex;i++) {
for(int j=0;j<=i;j++) {
if(j==0||j==i) {
arr[i][j]=1;
}else{
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
}
}
原理的方法
其实还有另外一种方法,是通过高中的知识二项分布的方式来解答的。
(x+y)^0 1
(x+y)^1 x+y
(x+y)^2 x^2+1*x*y+y^2
(x+y)^3 x^3+3x^2*y+3*x*y^2+y^3
上面的表达式来源于杨辉三角与二项分布的关系
其中所运用到的原理:
所以可以带来一个新的代码块
代码段中的(rowIndex-i)/(i+1)来自C(n,k)和C(n,k+1)
也就是C(n,K+1)/C(n,k)=(n-k)/(k+1)
long cur = 1;
for (int i = 0; i <= rowIndex; i++) {
//rowIndex代表的是行数
cur = cur * (rowIndex-i)/(i+1);
}
/**
当rowIndex为0的时候
此时的cur=1
*?