题目:打印杨辉三角
分析:将其看作是二维数组遍历而来的,空白部分设置为相同的值,打印时输出空格即可。首先定义所需要长度的二维数组(即杨辉三角的层数),先给边缘的部分赋值,再根据规律,给中间对应位置的元素赋值。
代码如下:
1 public static void YH(int h){
2 int[][] arr = new int[h][2*h-1];//定义二维数组
3 for (int i = 0; i < arr.length; i++) {//遍历多少行,i+1为行数
4 for (int j = 0; j < arr[i].length; j++) {//遍历每行的元素,j为元素索引
5
6 //打印边缘的1
7 if(j==h-1-i||j==h-1+i){
8 arr[i][j] = 1;
9 }
10
11 //根据杨辉三角特性打印中间的数
12 if(i>1&j>1&j<2*h-2){
13 arr[i][j] = arr[i-1][j-1]+arr[i-1][j+1];
14 }
15 }
16 }
17 show(arr);
18 }
遍历时,遇到没有赋值的元素,就输出空格。方法如下:
//遍历二维数组(杨辉三角)
public static void show(int[][] arr){
for (int[] is : arr) {
for (int i : is) {
if(i==0){
System.out.print(" "+" ");
continue;
}
System.out.print(" "+i+" ");
}
System.out.println();
}
}
测试:
public static void main(String[] args) {
// TODO Auto-generated method stub
YH(8);
}
运行结果: