用Java实现杨辉三角

用Java实现杨辉三角

实现杨辉三角:
(1)从控制台读取需打印的行数,以直角三角形格式打印
(2)从控制台读取需打印的行数,以等腰三角形格式打印

package Pratice;
/*
 * 测试杨辉三角
 * (1)从控制台读取需打印的行数,以直角三角形格式打印
 * (2)从控制台读取需打印的行数,以等腰三角形格式打印
 */
import java.util.Scanner;

public class Test {

	public static void main(String[] args) {
		
		//从控制台读入要打印的杨辉三角的行数line,并创建对应数组line*line
		Scanner in=new Scanner(System.in);
		int line=in.nextInt();
		int[][] a=new int[line][line];
		/*
		 * (1)打印杨辉三角格式:直角三角
		 * 杨辉三角特点:
 			除第0行第1行外,以及每行的开始(j=0)和结束处的值均为1外,
			其他的数的值(假设其坐标[i][j]),等于这个数当前所在列[j]的上一行[i-1]同列[j]位置处的值, 
			与上一行[i-1]前一列[j-1]位置处的值的和
			
		 *  规律2:
		 *       1)对角线处(i=j),行标等于列标等于1,即i=j=1;
		 *       2)直角三角,只对角线左下部分有值(包括对角线),此部分i>=j
		 *       (任取一值比较其行与列标大小,如6所在位置:[4][2],此时i=4,j=2)
		 * 
		 *       j       
		 *       0 1 2 3 4 
		 * i->0  1
		 *    1  1 1 
		 *    2  1 2 1 
		 *    3  1 3 3 1 
		 *    4  1 4 6 4 1
		 */
		//给数组赋值,只赋左下角至对角线截止(包括对角线)
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<=i;j++) {
				if(j==0 || i==j) a[i][j]=1;
				else a[i][j]=a[i-1][j-1]+a[i-1][j];
			}
		}
		
		//打印line行的杨辉三角,只打印左下角至对角线处
		for(int i=0;i<a.length;i++) {
			for(int j=0;j<=i;j++) {
				System.out.print(a[i][j]+" ");
			}
			//输出完一行后换行
			System.out.println();
		}	
		
		/*
		 * (2)打印杨辉三角格式:等腰三角
		 * 行数:5                             
		 *  0 1 2 3 4     需打印的行数    行下标             每行需打印出的 空格数
		 * 0    *         5        -   0     -1    =  4 
		 * 1   * *        5        -   1     -1    =  3
		 * 2  * * *       5        -   2     -1    =  2
		 * 3 * * * *      5        -   3     -1    =  1
		 * 4* * * * *     5        -   4     -1    =  0
		 *               需打印的空格数:line-index-1
		 */
		for(int i=0;i<a.length;i++) {
			//打印每行开始的空格
			for(int j=0;j<line-i-1;j++) {
				System.out.print(" ");
			}
			//打印杨辉三角的值
			for(int k=0;k<=i;k++) {
				System.out.print(a[i][k]+" ");
			}
			//每行的空格与杨辉三角的值打印完后换行
			System.out.println();
		}
		
	}
}

运行结果:
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值