首页 > 其他 > 详细

杨辉三角的实现

时间:2021-05-29 08:54:59      阅读:23      评论:0      收藏:0      [点我收藏+]

代码:

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();
    };
}


结果:

技术分享图片

杨辉三角的实现

原文:https://www.cnblogs.com/KevinBear/p/14824236.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!