黑马程序员技术交流社区

标题: Java杨辉三角问题 [打印本页]

作者: vince    时间: 2015-8-6 09:40
标题: Java杨辉三角问题
/*
  杨晖三角
  1
  1  1
  1  2  1
  1  3  3  1
  1  4  6  4  1  
*/
import java.util.Scanner;
class YangHuiSanJiao{
        public static void main(String[] args){
                Scanner s = new Scanner(System.in);
                System.out.println("请输入一个数字");
                int n = s.nextInt();
                int[][] arr = new int[n][n];
                for(int x=0;x<n;x++){
                        arr[x][0]=1;
                        arr[x][x]=1;
                }
                for(int x=2;x<n;x++){
                        for(int y=1;y<n;y++){
                                arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
                               
                        }
                }
               
                for(int x=0;x<n;x++){
                        for(int y=0;y<=x;y++){
                                System.out.print(arr[x][y]+"\t");
                        }
                        System.out.println();
                }
        }
}

问题:
1.全程为什么n不是arr.length
2.for(int x=2;x<n;x++){
                        for(int y=1;y<n;y++){
                                arr[x][y]=arr[x-1][y-1]+arr[x-1][y];   
   X为什么是从2开始,2开始那就是从第二个数组啊

作者: JustForYou    时间: 2015-8-6 09:56
杨辉三角形使用的是二维数组,x从2开始,是因为从第三行开始才有规律。2是外围数组的角标。
作者: yefeidd    时间: 2015-8-6 09:57
先回答第二个问题:观察杨辉三角的样式,明显每行第一个数和最后一个数是1.
所有有了:
  1.    for(int x=0;x<n;x++){
  2.                         arr[x][0]=1;
  3.                         arr[x][x]=1;
  4.                 }
复制代码
然后从第三行开始(计算机中从0开始计数,所以是x=2)出现杨辉三角的特征,即弟X行的第y个数等于第x-1行的y-1个数和第y个数的和。
  1.    for(int x=2;x<n;x++){
  2.                         for(int y=1;y<n;y++){
  3.                                 arr[x][y]=arr[x-1][y-1]+arr[x-1][y];
  4.                               
  5.                         }
复制代码




作者: yefeidd    时间: 2015-8-6 09:58
回答第一个问题:这个n是杨辉三角的行数,为什么要是数组的长度呢?????你没有理解算法




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2