题目如下:
由图我们可以看出杨辉三角形的规律 :
① 每行的首末元素都为1.
②从第三行开始,除首尾元素外满足 arrYanghui[i][j]= arrYanghui[i-1][j]+ arrYanghui[i-1][j-1];
③一共有十行,第 i 行有 i 个元素
接下来我们进行分析:
首先我们要做的就是初始化一个二维数组,定义的时候需要注意:用动态存储最为高效,所以首先定义int arr[][]=new int[][];将内层数组留白,定义完需要赋值,赋值的时候需要先给外层数组赋值,因为数量多,我们放在循环里,这里需要注意,不能直接给内层赋值:arr[i][0]=1,因为你并开辟空间后并没有给内层赋值,所以你内层的0是不存在的,它会去报空指针的错误:
就像这样,所以我们需要先给外层数组赋值,再去定义内层。初始化完后需要给每个元素赋值,我们先给首尾元素赋1,然后再添加判断语句,从第三行开始,除首尾元素外满足arrYanghui[i][j]= arrYanghui[i-1][j]+ arrYanghui[i-1][j-1];,然后我们进行遍历数组就完成了
代码如下:
package shuzu;
import java.util.Arrays;
public class yanghuisanjiao {
public static void main(String[] args)
{
int arrYanghui[][]=new int[10][];
for(int i = 0;i<arrYanghui.length;i++)
{
arrYanghui[i]=new int[i+1];/*先给外围数组赋值,如果像 arrYanghui[i][0]=1;的话,会显示空指针,
因为它只开辟了第一个数组,但是没有给内部数组赋值,所以它会显示空指针
*/
arrYanghui[i][0]=1;
arrYanghui[i][i]=1;
if(i>=2)
{
for(int j=1;j< arrYanghui[i].length-1;j++)
{
arrYanghui[i][j]= arrYanghui[i-1][j]+ arrYanghui[i-1][j-1];
}
}
}
for(int i = 0;i<arrYanghui.length;i++)
{
for(int j=0;j<arrYanghui[i].length;j++)
System.out.print(arrYanghui[i][j]+" ");
System.out.println();
}
}
}
结果如下:
还有一点小细节就是循环条件不管他有多长,哪怕它很短,你也尽量使用arr[].length,可以避免很多麻烦,也很保险