您的位置:首页 > 其它

杨辉三角的打印

2016-04-06 20:28 323 查看
1、首先总结出杨辉三角的规律:第n行的m个数可表示为 C(n-1,m-1)。

2、找出第n行第m个数是我们应该打印的第几个数

由图可以看出每一行的两个数之间都需要打印一个空格,

所以我们要打印出来的第m个数应该是该行实际的第2 * m - 1 个数。

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

3、然后根据这个规律来编写java代码。

package sort;

import java.util.Scanner;

public class Trigon1 {
public static void main(String[] args) {

Scanner temp = new Scanner(System.in);
System.out.println("请输入杨辉三角的行数");
int n = temp.nextInt();
way(n);
}

/*
* 打印三角前面的空格
*/
public static void way(int n) {
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= n - i; j++) {
System.out.print(" ");
}
/*
* 打印三角里面的数值
*/

for (int j = 1; j <= 2 * i - 1; j++) {
if (i == 1) {
System.out.print("1");
} else {
if (j % 2 == 0) {// 打印每两个数值之间 的空格
System.out.print(" ");
} else {// 根据总结出来的规律打印出第i行第j个数的数值
if (j == 1) {
System.out.print("1");
} else {
int a = Mnlti((j + 1) / 2 - 1);// 调用阶乘的那个封装
int b = Mnlti1(i - 1, (j + 1) / 2 - 1);// 调用从n乘到j那个封装。
System.out.print(b / a);
}
}
}
}
System.out.println("");
}
}

public static int Mnlti(int n) {// n的阶乘的方法的封装
return (n == 1 || n == 0) ? n : n * Mnlti(n - 1);
}

public static int Mnlti1(int n, int j) {// 从n乘到j的阶乘的封装
int c = n;

n = 1;
for (int i = c; i > c - j; i--) {
n *= i;
}
return n;

}
}


结果,当输入的n=8的时候,输出的结果如下:

1

1 1

1 2 1

1 3 3 1

1 4 6 4 1

1 5 10 10 5 1

1 6 15 20 15 6 1

1 7 21 35 35 21 7 1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: