任务描述
本关任务:给定一个正整数 n,打印出有 n 行的杨辉三角形。
杨辉三角形的特征:
- 第 n 行有 n 个数字;
- 每一行的开始和结尾数字都为 1;
- 从第 3 行起,除去每一行的开始和结尾数字,其余每个数都满足以下条件:任意一个数等于上一行同列和上一行前一列的和,如以下杨辉三角形中第 3 行第 2 列中的 2 等于它上一行同列(第 2 行第 2 列中的 1)和上一行前一列(第 2 行第 1 列中的 1)的和。
以下是行数有 5 行的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
编程要求
仔细阅读右侧编辑区内给出的代码框架及注释,按照提示编写程序代码。
注意:最后一行第一个数到行首的距离为 %2s 的距离,其余行往上依次加 %2s 的距离。
参考答案
/*
* 任务:从控制台获取输入的正整数n,打印带有n行的杨辉三角形
*
杨辉三角形的特点:
- 第 n 行有 n 个数字;
- 每一行的开始和结尾数字都为 1;
- 从第 3 行起,除去每一行的开始和结尾数字,其余每个数都满足以下条件:任意一个数等于上一行同列和上一行前一列的和,
如以下杨辉三角形中第 3 行第 2 列中的 2 等于它上一行同列(第 2 行第 2 列中的 1)和上一行前一列(第 2 行第 1 列中的 1)的和。
以下是有5行的杨辉三角形:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
*/
import java.util.Scanner;
public class Test {
public static void main(String[] args) {
// 创建Scanner对象
Scanner input = new Scanner(System.in);
// 获取输入的整数值
int n = input.nextInt();
// 请在Begin-End间编写代码
/********** Begin **********/
// 第一步:定义外循环打印行数
for(int i =0;i<n;i++) {
int number = 1;
System.out.printf("%"+(n-i)*2+"s","");
// 第二步:定义内循环打印数字,其中数字之间以4位宽度显示,具体样式见预期输出
for(int j=0;j<=i;j++) {
System.out.format("%4d",number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}
/********** End **********/
}
}