查看所有50道基础算法题请看:
Java的50道基础算法题
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
package Demo33Pascals_Triangle;
import java.util.Scanner;
/**
* 打印出杨辉三角形(要求打印出10行如下图)
* 1
* 1 1
* 1 2 1
* 1 3 3 1
* 1 4 6 4 1
* 1 5 10 10 5 1
*/
/*
分析:找规律,首先,第n行有n个数字
每行的第1个数字和最后一个数字都是1,即列==1或列==行时,都是1
其它列的数字都等于它左上方和右上方的数字之和
*/
public class Pascals_Triangle {
/**
* 定义一个递归方法,获得在一个位置上的数字
* @param x
* @param y
* @return
*/
public static int number(int x,int y){
if(y==1 || x==y){
return 1;
}else{
return number(x-1,y-1)+number(x-1,y);
}
}
public static void prints(int row){
for (int i = 0; i <= row; i++) {
//打印空格
for (int j = 1; j <= row-i ; j++) {
System.out.print(" ");
}
//打印数字
for (int k = 1; k <= i; k++) {
System.out.print(number(i,k)+" ");
}
System.out.println();
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
System.out.println("请您输入要打印几行啊?");
int row = sc.nextInt();
prints(row);
// 此方法为网上大佬的方法,看不太懂,不过确实可以打出来结果
/*int rows = 10;
for (int i = 0; i < rows; i++) {
int number = 1;
//打印空格字符串
System.out.format("%" + (rows - i) * 2 + "s", "");
for (int j = 0; j <= i; j++) {
System.out.format("%4d", number);
number = number * (i - j) / (j + 1);
}
System.out.println();
}*/
}
}