杨辉三角的实现

Posted KevinBear

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了杨辉三角的实现相关的知识,希望对你有一定的参考价值。

代码:

import java.math.BigInteger;

public class Main {

    static int N=12;//输出多少行
    static int max= C(N/2,N).length();//单个字符长度

    public static void main(String[] args) {
        杨辉三角_循环(N);
        杨辉三角_递归(N);
    }

    public static void 杨辉三角_循环(int n){
        for (int i = 0; i < n; i++) {
            留白(N-1-i);
            for (int j = 0;j < i+1;j++)
            {
                fmt(C(j,i));
                留白(1);
            }
            System.out.println();
        }
    }

    public static void 杨辉三角_递归(int n){
        if (n==0)return;
        留白(n-1);
        for (int j = 0;j < N-n+1;j++)
        {
            fmt(C(j,N-n));
            留白(1);
        }
        System.out.println();
        杨辉三角_递归(n-1);
    }

    public static void 留白(int n){//输出n个格式空白
        for (int i = 0; i < n; i++) {
            fmt(" ");
        }
    }

    public static void fmt(String s){//以最大数字长度输出
        System.out.print(String.format("%-"+max+"s",s));
    }

    public static String C(int m,int n){//组合C(n,m)
        return new BigInteger(A(m,n)).divide(new BigInteger(J(m))).toString();
    }

    public static String A(int m,int n){//排列A(n,m)
        return new BigInteger(J(n)).divide(new BigInteger(J(n-m))).toString();
    };

    public static String J(int n){//n的阶乘
        if(n==0||n==1)
            return "1";

        BigInteger res=new BigInteger("1");

        for (int i = 2;i < n+1;i++) res=res.multiply(BigInteger.valueOf(i));

        return res.toString();
    };
}


结果:

在这里插入图片描述

以上是关于杨辉三角的实现的主要内容,如果未能解决你的问题,请参考以下文章

为啥这个 CSS 片段可以画一个三角形? [复制]

Cg入门16:Fragment shader - 片段级光照

如何在 C++ 中为 GLSL 片段着色器实现 iGlobalTime?

绘制三角形的OpenGL程序给出了一个黄色的屏幕

CSS实现三角形

如何为每个 WebGL 三角形设置单独的颜色?