杨辉三角的问题,借助二维数组的方法来解决。
1 public class code1 { 2 public static void main(String[]args) { 3 int[][] x = new int[6][6]; 4 for (int i = 0; i < x.length; i++) { 5 x[i][0] = 1; 6 x[i][i] = 1; 7 8 } 9 for (int i = 2; i < x.length; i++) { 10 for (int j = 1; j < i; j++) { 11 x[i][j] = x[i - 1][j - 1] + x[i - 1][j]; 12 } 13 14 } 15 16 17 for (int i = 0; i < x.length; i++) { 18 for (int j = 0; j < i + 1; j++) { 19 System.out.printf("%-3d",x[i][j]); 20 } 21 System.out.println(); 22 }
题目:杨辉三角的变形,由原来的等腰三角形变成直角三角形,但规律还是没有发生改变,所以我们还是按照原来的题目做。
根据题目分析发现三角形的第一列和每一行的最后一个都是数值1,那我们根据这个使用循环来把这些地方的值赋值为1;
for (int i = 0; i < x.length; i++) {
x[i][0] = 1;
x[i][i] = 1;
第二个那就是除了刚才的那些地方,其他的位置我们要赋值,根据规律,借用循环来完成。用i来表示行数,用J来表示每一行的下标,也可以了解为例数。
之所以i是从2开始的是因为前面俩行是一个只有一个数,还有一个是只有2个数,根据题意知,他们都是1,那也就是说他们不参与我们这个数的计算所以我们从2开始循环。
而i是每一行的下标,因为前面的每一行的首个和最后一个是1,那么我们就可以不要把这些数进行计算。
for (int i = 2; i < x.length; i++) {
for (int j = 1; j < i; j++) {
x[i][j] = x[i - 1][j - 1] + x[i - 1][j];(这行代码就是杨辉三角数与数之间的关系)
}
最后我们已经把这个二维数组已经搞好了,那接下来我们应该把它们给输出来,同样也是借助循环来输出,这里不能借助foreach来,因为这个输出的格式有要求,所以我们输出格式化。
for (int i = 0; i < x.length; i++) {
for (int j = 0; j < i + 1; j++) {
System.out.printf("%-3d",x[i][j]);
}
第二个循环为什么要加一呢,我们来看,在第一个循环中i是从0到5,也就是有6行,如果J小于i的话 ,那我们的J的取值范围就是0到4,i是能取到5,但,J是不能取到的,因为是小于不能等于,
所以我们在i的基础上加上1,就可以了。
这是我关于这道题的想法。