/*
需求:在控制台上打印如下图形
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
思路:1,观察上述图形,分析数字间的规律,发现这个三角形的两条边
上的数字都是1;当每一行上的数多于3时,从第二个数字开始
每个数字都是上一行与本数字相邻的两个数字之和
2,根据观察得出的规律,不妨将这个图形用二维数组的形式进行存放
定义一个拥有5个一维数组的二维数组arr[5][5];
3, 不难分析,arr[0][0]=1;arr[1][0]=1;arr[1][1]=1
arr[2][1]=arr[1][0]+arr[1][1];
arr[3][1]=arr[2][0]+arr[2][1];
4, 用for循环嵌套遍历2维数组,用if else语句判断
5,打印图形
*/
import java.util.Scanner;
class Yanghui
{
public static void main(String[] args)
{
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个数字:");
int num = sc.nextInt();
int[][] arr = new int[num][num];//定义一个二维数组存储数据
for(int i=0;i<num;i++){//外循环控制行数
for(int x=i;x<num-1;x++){//先输出一个由空格组成的倒三角
System.out.print(" ");
}
for(int j=0;j<=i;j++){//输出一个正三角
//当二维数组中的一维数组的脚标为0
//或者二维数组的脚标和一维数组的脚标相等时,输出1
if(j==0 || j==i){
arr[i][j] = 1;
}
//除了1以外的数组元素等于上一个数组中与之相邻的两个元素之和
else{
arr[i][j] = arr[i-1][j-1]+arr[i-1][j];
}
System.out.print(arr[i][j]+" ");
}
System.out.println();
}
}
} |
|