杨辉三角形
在屏幕上显示杨辉三角形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
......................................
*问题分析与算法设计
杨辉三角形中的数,正是(x+y)的N次方幂展开式各项的系数。本题作为程序设计中具有代表性的题目,求解的方法很多,这里仅给出一种。
从杨辉三角形的特点出发,可以总结出:
1)第N行有N+1个值(设起始行为第0行)
2)对于第N行的第J个值:(N>=2)
当J=1或J=N+1时:其值为1
J!=1且J!=N+1时:其值为第N-1行的第J-1个值与第N-1行第J个值之和
将这些特点提炼成数学公式可表示为:
1 x=1或x=N+1
c(x,y)= c(x-1,y-1)+c(x-1,y) 其它
本程序应是根据以上递归的数学表达式编制的。
public class T10 { public static void main(String[] args) { /* * * * 1. 每行第一个都是1,第0行的第0个为1 第1行的第1个为1 第2行的第2个为1 2. c(x,y)= c(x-1,y-1)+c(x-1,y) c(2,1)= c(2-1,1-1)+c(2-1,1) c(3,1)= c(3-1,1-1)+c(3-1,1); * * 1 0 0 0 0 1 1 0 0 0 1 2 1 0 0 1 3 3 1 0 1 4 6 4 1 * * */ int i = 5;//用户输入 int x = i; int y = i; int arrays[][] = new int[x][y]; for(int m = 0 ;m < x;m++){ arrays[m][0] = 1; // 每行第一个都是1,第0行的第0个为1 arrays[m][m] = 1; // 第1行的第1个为1, 第2行的第2个为1 } for(int a = 2 ;a < x ;a++){//行的遍历 for(int b=1 ; b < a ;b++){ //列的遍历,列数比行数少1; arrays[a][b] = arrays[a-1][b-1]+arrays[a-1][b]; } } //迭代数组,看整个数组结构 for(int m = 0 ; m < x;m++){ for(int n = 0 ;n < y;n++){ System.out.print(arrays[m][n]+" "); } System.out.println(); } } }