杨辉三角的实现
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();
};
}
结果:
以上是关于杨辉三角的实现的主要内容,如果未能解决你的问题,请参考以下文章
Cg入门16:Fragment shader - 片段级光照