用Java打印10行杨辉三角形
输出案例:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1
思路分析:
找杨辉三角形规律:
(1)第一行1个元素,第二行2个元素,以此类推,第n行n个元素。
(2)每行的第一个和最后一个元素是1。
(3)第三行的第2个元素是第二行第1个元素与第二行第2个元素之和,以此类推,第 i 行的第 j 个元素是第 i-1 行第 j-1 个元素与第 i-1 行第 j 个元素之和。
用二维数组表示:arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
做题步骤:
(1)建立一个二维数组,内部有10个一维数组,但是每个一维数组的元素数量不同。
(2)定义三个变量 i 和 j 表示二维数组的行号与列号,k 表示空格。
int arr[][] = new int[10][];
int i;
int j;
int k;
(3)遍历二维数组。
for(i = 0; i < arr.length; i++){
arr[i] = new int[i+1];//表示第i个一维数组的长度为i+1
for(j = 0; j < arr[i].length; j++){
arr[i][0] = 1;//每行的第一个元素是1
arr[i][arr[i].length - 1] = 1;//每行的最后一个元素是1
if(i > 1 && j > 0 && j < arr[i].length - 1){//从第三行开始,不是第一个和最后一个元素的符合以下规律
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
(4)加入空格输出
for(i = 0; i < arr.length; i++){
for(k = 0; k < arr.length - 1 - i; k++){
System.out.print(" ");
}
for(j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
最终完整版
public class YangHui {
public static void main(String[] args){
int arr[][] = new int[10][];
int i;
int j;
int k;
for(i = 0; i < arr.length; i++){
arr[i] = new int[i+1];//表示第i个一维数组的长度为i+1
for(j = 0; j < arr[i].length; j++){
arr[i][0] = 1;//每行的第一个元素是1
arr[i][arr[i].length - 1] = 1;//每行的最后一个元素是1
if(i > 1 && j > 0 && j < arr[i].length - 1){//从第三行开始,不是第一个和最后一个元素的符合以下规律
arr[i][j] = arr[i-1][j-1] + arr[i-1][j];
}
}
}
for(i = 0; i < arr.length; i++){
for(k = 0; k < arr.length - 1 - i; k++){
System.out.print(" ");
}
for(j = 0; j < arr[i].length; j++){
System.out.print(arr[i][j] + " ");
}
System.out.println();
}
}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/120196.html