java写杨辉三⾓(⽤⼆维数组,⼀维数组和不⽤数组)
⾯试的时候碰到过的⼀个简单的编程题⽬
其实写杨辉三⾓最好的办法是⽤数组写,最直观的就是⽤⼆维数组写,不过⾯试官可能会不让⽤⼆维数组写,可以⽤⼀维数组(应该是考个⼈的逻辑思维能⼒,或者数学基础?具体就不好说了)
进⼊正题
如果不⽤数组的话,那么每⼀⾏的关联就不存在了,每⼀⾏都是新的开始,要真正⽤数学公式来算了,我⾃⼰也懒得去其中规律(可能凭⾃⼰的数学功底不到,反正我是没有算),
百度到⼀个数学公式,套⽤在java代码⾥⾯的
开始上码
public static void main(String[] args) {
//定义需要得到的杨辉三⾓的⾏数
int n = 13;
//定义当前⾏数
int x ;
//定义要输出的数字
long xx;
for(x = 0;x<n;x++) {
xx = 1;
//这个循环加空格是为了让图形变成类似于等腰的三⾓形
for(int i = 0;i<n-x;i++) {
System.out.print(" ");
}
//循环输出需要的数字
for(int k = 0;k<x+1;) {
//每⾏需要得到的数字
k = k+n;
for(int j = 0;j<=x;j++) {
System.out.print(" "+xx);
//这个就是百度得到的数学公式了,具体就⾃⼰理解了
xx = xx*(x - j)/(j + 1);
}
}
//换⾏输出
System.out.println();
}
}
写完我也没有具体检查和优化,应该有些多余的代码可以不⽤,不过我也没管,主要是理解就好了
⼆维数组就看起来好理解了
public static void main(String[] args) {
//初始话⼀个长度为10的数组
int[][] arr = new int[10][];
//数组的第X⾏有X个数值,如果不想写这个循环,初始化数组时就要给第⼆个中括号⼀个数值,按理来说也是10        for(int x = 0;x<arr.length;x++) {
arr[x] = new int[x+1];
}
for (int i = 0; i < arr.length; i++) {
//这个循环为了让结果和三⾓形更相似
for(int k = 0 ; k<arr.length-i-1 ; k++){
System.out.print(" ");
}
//这个循环是依次输⼊数值的
for (int j = 0; j < i+1; j++) {
//每⼀⾏的数组的第⼀个和最后⼀个都是1
arr[i][0] = arr[i][i] = 1;
//第三⾏开始计算其他数值
if (i > 1&&j>0&&j<i) {
arr[i][j] = arr[i - 1][j - 1] + arr[i - 1][j];
}
//输出数值
System.out.print(arr[i][j]+" ");
}
//循环⼀次换⾏⼀次
System.out.println();
}
}
⼀维数组,⽹上抄的,感觉这个⽬前是写的最好最精妙的
public static void main(String[] args){
int yh[] = new int[8];
for(int i=0;i<8;i++) {
yh[i]=1;java定义一维数组并赋值
for (int j=i-1;j>0;j--){
yh[j]= yh[j-1]+yh[j];
}
for (int j=0;j<=i;j++) {
System.out.print(yh[j]+"\t");
}
System.out.println();
}
}

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。