杨辉三角的实现

一、什么是杨辉三角

  杨辉三角是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。每行数字左右对称,由1开始逐渐变大。第n行的数字有n项。前n行共[(1+n)n]/2 个数。

  杨辉三角联系最紧密的是二项式乘方展开式的系数规律,即二项式定理。例如在杨辉三角中,第3行的三个数恰好对应着两数和的平方的展开式的每一项的系数,第4行的四个数恰好依次对应两数和的立方的展开式的每一项的系数,即(a+b)³=a³+3a²b+3ab²+b³,以此类推,杨辉三角是最常见的算法便是用上一行递推计算。

  杨辉三角是中国古代数学的杰出研究成果之一,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的结合。

二、代码实现

1.输出10行的杨辉三角

/*
 * 1
 * 11
 * 121
 * 1331
 * ......
 */

public class YangHui
{
    public static void main(String[] args)
    {

        int[][] YangHui=new int[10][];
        for (int i=0;i<YangHui.length;i++)
        {
            YangHui[i]=new int[i+1];//建立二维数组,及行的元素个数

        }
        for (int i=0;i<YangHui.length;i++)
        {
            for (int j=0;j<YangHui[i].length;j++)
            {
/*
        j=0是二位数组第一个元素为0,i=j是在二位数组中最后一个元素
        例:1 YangHui[0][0]
           11 YangHui[1][0] YangHui[1][1]
           121 YangHui[2][0]   ... YangHui[2][2]
 */
                if (j==0||i==j)
                {
                    YangHui[i][j]=1;
                    //先给1行1列;2行1列,2行2列,3行1列,3行3列...赋值为1
                }else
                {
                    YangHui[i][j]=YangHui[i-1][j-1]+YangHui[i-1][j];
                }//再对其他行列进行赋值计算
            }
        }
        for (int i=0;i<YangHui.length;i++)
        {
            for (int m=10;m>i;m--)
            {
                System.out.print("   ");
            }//,将直角三角形的杨辉三角转化成等边三角形的杨辉三角,空格和上层i联系外层i自增,内层m每行自减
            for (int j=0;j<YangHui[i].length;j++)
            {
                System.out.print(YangHui[i][j]+"    ");
                //字符间间隔
            }
            System.out.println();
        }
    }
}

2输入行数再输出

/*
 * 1
 * 11
 * 121
 * 1331
 * ......
 */

import java.util.Scanner;

public class YangHui1
{
    public static void main(String[] args)
    {
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入需要输出几行的杨辉三角:");
        int x=scanner.nextInt();
        int[][] YangHui=new int[x][];
        for (int i=0;i<YangHui.length;i++)
        {
            YangHui[i]=new int[i+1];//建立二维数组,及行的元素个数

        }
        for (int i=0;i<YangHui.length;i++)
        {
            for (int j=0;j<YangHui[i].length;j++)
            {
/*
        j=0是二位数组第一个元素为0,i=j是在二位数组中最后一个元素
        例:1 YangHui[0][0]
           11 YangHui[1][0] YangHui[1][1]
           121 YangHui[2][0]   ... YangHui[2][2]
 */
                if (j==0||i==j)
                {
                    YangHui[i][j]=1;
                    //先给1行1列;2行1列,2行2列,3行1列,3行3列...赋值为1
                }else
                {
                    YangHui[i][j]=YangHui[i-1][j-1]+YangHui[i-1][j];
                }//再对其他行列进行赋值计算
            }
        }
        for (int i=0;i<YangHui.length;i++)
        {
            for (int m=x;m>i;m--)
            {
                System.out.print("   ");
            }//,将直角三角形的杨辉三角转化成等边三角形的杨辉三角,空格和上层i联系外层i自增,内层m每行自减
            for (int j=0;j<YangHui[i].length;j++)
            {
                System.out.print(YangHui[i][j]+"    ");
                //字符间间隔
            }
            System.out.println();
        }
    }
}

三、大致实现过程

杨辉三角 lua 杨辉三角的规律公式_杨辉三角 lua

杨辉三角 lua 杨辉三角的规律公式_System_02

四、总结

  实现杨辉三角主要使用了二维数组,利用外围数组控制行,内围数组控制列来实现,因为在实现过程中需要计算上一行的数值,所以在计算之前需要给每行第一个元素和最后一个元素赋值为1,这样就可以进行计算了。