欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

java写杨辉三角(用二维数组,不用数组)

程序员文章站 2022-07-14 23:37:10
...

面试的时候碰到过的一个简单的编程题目
其实写杨辉三角最好的办法是用数组写,最直观的就是用二维数组写,不过面试官可能会不让用二维数组写,可以用一维数组(应该是考个人的逻辑思维能力,或者数学基础?具体就不好说了)

进入正题
如果不用数组的话,那么每一行的关联就不存在了,每一行都是新的开始,要真正用数学公式来算了,我自己也懒得去找其中规律(可能凭自己的数学功底找不到,反正我是没有算),
百度到一个数学公式,套用在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();
        }
    }
相关标签: 基础算法