题目:打印杨辉三角
分析:将其看作是二维数组遍历而来的,空白部分设置为相同的值,打印时输出空格即可。首先定义所需要长度的二维数组(即杨辉三角的层数),先给边缘的部分赋值,再根据规律,给中间对应位置的元素赋值。
代码如下:
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); }
运行结果: