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;
		    	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();
	    	}
    	}
    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/weixin_44289552/article/details/87539984
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞