用Java实现杨辉三角
实现杨辉三角:
(1)从控制台读取需打印的行数,以直角三角形格式打印
(2)从控制台读取需打印的行数,以等腰三角形格式打印
package Pratice;
/*
* 测试杨辉三角
* (1)从控制台读取需打印的行数,以直角三角形格式打印
* (2)从控制台读取需打印的行数,以等腰三角形格式打印
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
//从控制台读入要打印的杨辉三角的行数line,并创建对应数组line*line
Scanner in=new Scanner(System.in);
int line=in.nextInt();
int[][] a=new int[line][line];
/*
* (1)打印杨辉三角格式:直角三角
* 杨辉三角特点:
除第0行第1行外,以及每行的开始(j=0)和结束处的值均为1外,
其他的数的值(假设其坐标[i][j]),等于这个数当前所在列[j]的上一行[i-1]同列[j]位置处的值,
与上一行[i-1]前一列[j-1]位置处的值的和
* 规律2:
* 1)对角线处(i=j),行标等于列标等于1,即i=j=1;
* 2)直角三角,只对角线左下部分有值(包括对角线),此部分i>=j
* (任取一值比较其行与列标大小,如6所在位置:[4][2],此时i=4,j=2)
*
* j
* 0 1 2 3 4
* i->0 1
* 1 1 1
* 2 1 2 1
* 3 1 3 3 1
* 4 1 4 6 4 1
*/
//给数组赋值,只赋左下角至对角线截止(包括对角线)
for(int i=0;i<a.length;i++) {
for(int j=0;j<=i;j++) {
if(j==0 || i==j) a[i][j]=1;
else a[i][j]=a[i-1][j-1]+a[i-1][j];
}
}
//打印line行的杨辉三角,只打印左下角至对角线处
for(int i=0;i<a.length;i++) {
for(int j=0;j<=i;j++) {
System.out.print(a[i][j]+" ");
}
//输出完一行后换行
System.out.println();
}
/*
* (2)打印杨辉三角格式:等腰三角
* 行数:5
* 0 1 2 3 4 需打印的行数 行下标 每行需打印出的 空格数
* 0 * 5 - 0 -1 = 4
* 1 * * 5 - 1 -1 = 3
* 2 * * * 5 - 2 -1 = 2
* 3 * * * * 5 - 3 -1 = 1
* 4* * * * * 5 - 4 -1 = 0
* 需打印的空格数:line-index-1
*/
for(int i=0;i<a.length;i++) {
//打印每行开始的空格
for(int j=0;j<line-i-1;j++) {
System.out.print(" ");
}
//打印杨辉三角的值
for(int k=0;k<=i;k++) {
System.out.print(a[i][k]+" ");
}
//每行的空格与杨辉三角的值打印完后换行
System.out.println();
}
}
}
运行结果: