public class yanghui
{
public static void main(String args[])
{
int[][] nyanghui=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<i;j++)
{
if(j==0 || j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1][j];
}
}
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<nyanghui[i].length;j++)
{
System.out.println(nyanghui[i][j]);
}
}
}
}
谢了.
----------------解决方案--------------------------------------------------------
我来说几句.
public class yanghui
{
public static void main(String args[])
{
int[][] nyanghui=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<i;j++)
{
if(j==0 || j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1[j]; /*按此公式,我们知当i=0,j=1不属于if的判定条件,故按else语句执行,这样就是nyanghui[0][1]=nyanghui[-1][0]+nyanghui[-1][1],显然出现了数组下标溢出问题,即nyanghui[0][1]无法求解出,所以无法运行此程序*/
}
}
for(int i=0;i<nyanghui.length;i++)
{
for(int j=0;j<nyanghui[i].length;j++)
{
System.out.println(nyanghui[i][j]);
}
}
}
}
这里我想问一下,杨辉三角到底目的是要我们输出什么样的图形.
----------------解决方案--------------------------------------------------------
1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
...
如此
----------------解决方案--------------------------------------------------------
按你的意思是a[1][1]等于2了,而一楼的程序好象要将a[1][1]生成1,也不知道你们谁的对,哪个大哥再进来肯定一下
----------------解决方案--------------------------------------------------------
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
................................
这样?
----------------解决方案--------------------------------------------------------
不好意思,我前面搞错了,没有看清楚程序
一楼的程序不存在我说的情况(因为i<j);
上面的程序之所以不能运行,却能通过编译,
是由于:
程序虽然为整个二维数组分配了空间,
却没有为二维数组里的每一个一维数组分配空间
因为此处每一个一维数组的长度是不一样的
所以我们必须动态的为每一个一维数组分配空间
下面将程序改写为
public class Yanghui
{
public static void main(String args[])
{
int nyanghui[][]=new int[10][];
for(int i=0;i<nyanghui.length;i++)
{ nyanghui[i]=new int[i+1]; //动态为每一个一维数组分配空间
for(int j=0;j<=i;j++)
{
if(j==0||j==i)
nyanghui[i][j]=1;
else
nyanghui[i][j]=nyanghui[i-1][j-1]+nyanghui[i-1][j];
System.out.print(" "+nyanghui[i][j]); //此出不换行
}
System.out.println(); //内循环技术,执行换行
}}}
上面我将程序的后半部分循环给删除了,因为那只会增加系统地开销,当然也可以那样写,
不过输出语句一定要改,我们要在适当的时候换行,而不是每输出一个数组原素就换行.
输出地效果还是不好,如果能像C语言那样格式化输出(比方说我们让每一个数组元素地长度为6,不足前导空格)就好多了
----------------解决方案--------------------------------------------------------
上面打错字了
System.out.println(); //内循环技术,执行换行
我要说的是"内部循环结束"
----------------解决方案--------------------------------------------------------
谢谢daydayf!!!
----------------解决方案--------------------------------------------------------
// 据说jdk1.5增加了自动装包/拆包(Autoboxing/unboxing)功能,或许可以这样写。
int n=10;
ArrayList c = new ArrayList();
for(int i=0;i<n;i++)
{
c.add(0,1);
System.out.print(1);
for(int j=1;j<i-1;j++)
{
int value=c.get(j)+c.get(j+1);
c.set(j,value);
System.out.print(value);
}
if(i!=0)
System.out.print(1);
System.out.println();
}
----------------解决方案--------------------------------------------------------