一、二维数组
import java.util.Scanner;
public class YangHuiTriangle {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int row=sc.nextInt();
int [][]arr=new int[row][row];
for(int i=0;i<row;i++) { //行
for(int j=0;j<=i;j++) { //列
if(j==0||j==i) { //边界处理,(0,0),(1,0),(1,1),(2,2)均为1
arr[i][j]=1;
}else {
//其他元素是其正上方与左上方元素的和,(2,1)=(1,1)+(1,0)
arr[i][j]=arr[i-1][j]+arr[i-1][j-1];
}
}
}
for(int i=0;i<row;i++) {
for(int k=0;k<=i;k++) {
System.out.print(arr[i][k]+" ");
}System.out.println();
}
}
}
二、 一维数组
import java.util.Scanner;
public class YangHuiTrangle1 {
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int row=sc.nextInt();
//新定义的数组初始值均为0,b[0]=b[1]...=0
int []a=new int[10000];//保存当前行的元素值
int []b=new int[10000];//临时数组,a[i]置数后拷贝到b[i]中
b[1]=1; //首行为1
for (int i = 1; i <= row; i++)
{
for (int j = 1; j <= i; j++)
//下一行计算时,a数组会被重置
a[j] = b[j] + b[j-1];
for (int j = 1; j <= i; j++)
{
//下一行更新a数组时,b数组可以保存了上一行的值
b[j] = a[j];
System.out.print(b[j]+" ");
}System.out.println();
}
}
}
三、二项式定理
C(n,m)=n!/[m!*(n-m)!]
import java.util.Scanner;
public class YangHuiTrangle1{
//求出杨辉三角的每一项
public static int YangHuiTrangle(int n,int m)
{
int k=1;
for(int i=n,j=1;i>n-m;i--)
{
k=k*i/j; //计算组合数,分子从大到小计算,分母从小到大计算(二项式定理公式化简)
j++;
}
return k;
}
public static void main(String[] args) {
Scanner sc=new Scanner(System.in);
int row=sc.nextInt();
for(int i=0;i<row;i++) {
for(int j=0;j<=i;j++){
System.out.print(YangHuiTrangle(i,j)+" ");
} System.out.println();
}
}
}
测试了下,实验结果如下图
参考了https://blog.csdn.net/u010304217/article/details/38541375(C语言的)