杨辉三角
杨辉三角,是二项式系数在三角形中的一种几何排列。在欧洲,这个表叫做帕斯卡三角形。帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年。杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合 。
代码
public static List<List<Integer>> generate(int numRows) {
List<List<Integer>> ret=new ArrayList<>();
List<Integer> list=new ArrayList<>();
list.add(1);
ret.add(list);
for (int i = 1; i < numRows; i++) {
List<Integer> curList=new ArrayList<>();
curList.add(1);
for (int j = 1; j < i; j++) {
List<Integer> newList=ret.get(i-1);
curList.add(newList.get(j)+newList.get(j-1));
}
curList.add(1);
ret.add(curList);
}
return ret;
}
list为我们的每一行的具体数字,定义一个顺序表来实现为List<Integer>类型,然后一共有numrows行,每一行都是一个list,也就是List<List<Integer>>类型,我们可以知道第一行第只有一个数字所以我们先新增也就是add一个1在list的第一个位置,然后把第一行add到ret里。从第二行开始循环,先new一个新的curlist,每一行第一个和最后一个都是1,因此我们先add两个1,再在两个1中间写一个循环用来算两个一中间的数字。我们可以知道,这个数字等于上一行和他相同列数和他前一列数字之和,所以我们要拿到上一行,通过从ret中用get方法实现,拿到引用后,两个值相加,在add到curlist中,最后给ret也新增一下,就拿到了结果。
运行结果
例如:输入是5。