class yanghui{
public void paint(int n){
int a[][]=new int [n][];
for (int i=0;i<n;i++){
a[i]=new int[i+1];
}
for (int i=0;i<a.length;i++){
for (int j=0;j<a[i].length;j++){
if(i==j||j==0){
a[i][j]=1;
}
else 
a[i][j]=a[i-1][j-1]+a[i-1][j];

}

}
for (int i=0;i<a.length;i++){
for (int j=0;j<a[i].length;j++){
System.out.print(a[i][j]+" ");
}
System.out.println();
}

}
}
public class 杨辉三角 {
public static void main(String args[]){
yanghui yh=new yanghui ();
yh.paint(10);
}
}中不规则数组定义,为什么a[i]=new int[i+1];,为什么是int[i+1]?

解决方案 »

  1.   

    因为不规则啊!
    比如i=0, 你难道 new int[0] 吗?当然是 new int[1]啦!
    谁让你的下标从0开始的。
      

  2.   

    因为不规则啊!
    比如i=0, 你难道 new int[0] 吗?当然是 new int[1]啦!
    谁让你的下标从0开始的。
      

  3.   

    这怎么说同样的话?我想知道这样定义的依据在哪里?a[i]=new int [i+2]行吗?如果不行,为什么?
      

  4.   

     你的题目是要输出杨辉三角形 你+2 是可以的不过数组那么大 用不着啊 ,你数组a[i]=new int [i+1]刚好够用啊,第一次是1个第二次是两个..............
      

  5.   

    #include<stdio.h>void main(){ int i,j; int a[10][10];    for(i=0;i<10;i++)  a[i][0]=1; for(j=1;j<10;j++)  a[0][j]=0; ; for(i=1;i<10;i++)  for(j=1;j<10;j++)   a[i][j]=a[i-1][j-1]+a[i-1][j]; ; for(i=0;i<10;i++)  for(j=0;j<=i;j++)  {   printf("%4d",a[i][j]);   if(j==i)printf("\n\n");  }}