杨辉三角特性:
(1)每行端点与结尾的数为1.
(2)每个数等于它上方两数之和。
(3)每行数字左右对称,由1开始逐渐变大。
(4)第n行的数字有n项。
1 n=1
1 1 n=2
1 2 1 n=3
1 3 3 1 n=4
以下是Java实现的杨辉三角代码,用递归方式实现:
递归方法,返回整个杨辉三角形
public List<List<Integer>> generate(int numRows) {
List<List<Integer>> rows = new ArrayList<>();
List<Integer> row = new ArrayList<Integer>();
if(numRows == 0){
return new ArrayList<>();
}else if(numRows == 1){
row.add(1);
}else{
rows = generate(numRows-1);
row.add(1);
List<Integer> rowLast = rows.get(numRows-2);
for(int i=1;i<rowLast.size();i++){
row.add(rowLast.get(i-1)+rowLast.get(i));
}
row.add(1);
}
rows.add(row);
return rows;
}
递归方法,返回杨辉三角中指定某行数据
public List<Integer> getRow(int rowIndex) {
List<Integer> list = new ArrayList<>();
if(rowIndex==0){
list.add(1);
return list;
}else{
list = getRow(rowIndex-1);
List<Integer> result = new ArrayList<>();
result.add(1);
for(int i=1;i<list.size();i++){
result.add(list.get(i-1)+list.get(i));
}
result.add(1);
return result;
}
}