杨辉三角的实现

一、什么是杨辉三角

  杨辉三角是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。每行数字左右对称,由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();
}
}
}

三、大致实现过程

四、总结

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

杨辉三角的实现(Java)的更多相关文章

  1. Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

  2. 使用Java打印杨辉三角

    package 杨辉三角; import java.util.Scanner; public class 三角 { private static Scanner scn; public static ...

  3. Java数组的应用:案例:杨辉三角,三维数组,字符串数组

    //import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public st ...

  4. Java实现杨辉三角

    杨辉三角用了两种方法解决 二维数组/递归方法 +—————————————————————————— import java.util.Scanner; public class YangHui02 ...

  5. [Java练习题] -- 1. 使用java打印杨辉三角

    package cn.fzm.demo1.array; import java.util.Scanner; /* * 需求:打印杨辉三角形(行数可以键盘录入) 1 1 1 1 2 1 1 3 3 1 ...

  6. Java之杨辉三角的实现

    今天突然想温习一下Java的基础,想了想就写写杨辉三角吧 1.直接法,利用二维数组 import java.util.Scanner; public class Second { public sta ...

  7. 杨辉三角的打印(Java)

    // //输入指定的行数,打印杨辉三角 // //每个数等于它上方两数之和. //每行数字左右对称,由1开始逐渐变大. //第n行的数字有n项. // // // //可从打印菱形的思想出发:???? ...

  8. java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题

    一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...

  9. 1233: 输出杨辉三角前n行(Java)

    WUSTOJ 1233: 输出杨辉三角前n行 题目 原题链接 Description 输出杨辉三角前n行. Input 输入一个数n(n <= 9) Output 输出杨辉三角前n行.(注意行末 ...

  10. 实验----Java的二维数组的应用及杨辉三角的编写

    (1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...

随机推荐

  1. javascript输出数据到文件

    function export(name, data) { var urlObject = window.URL || window.webkitURL || window var export_bl ...

  2. Ubuntu 18.04 + pip3 install virtualenvwrapper 报错 ERROR: virtualenvwrapper could not find virtualenv in your path

    接上片... 问题 virtualenvwrapper装好后, 发现使用mkvirtualenv XX时, 又找不到virtualenv了... apt install python3-virtual ...

  3. Angular的工作原理

    来源:https://www.cnblogs.com/moriah/p/6096998.html <!doctype html> <html ng-app> <head& ...

  4. 两个"�"="锟斤拷"?

    关于作者:程序猿石头(ID: tangleithu),现任阿里巴巴技术专家,清华学渣,前大疆后端 Leader.欢迎关注,交流和指导! 本文首发于微信公众号,原文链接,转载请全文保留. 以一首七言绝句 ...

  5. javascript中的内置对象和数据结构

    目录 简介 基础类型 undefined Boolean和Boolean对象 Number和BigInt String Symbol null Object Function Date Array K ...

  6. HashMap什么时候进行扩容?

    Threshold:table数组元素个数size的大小超过threshold且且Node<K,V>[] table数组长度没有超过64时时table数组扩容.当hashmap中的元素个数 ...

  7. Java基本概念:多态

    一.简介 描述: 多态性是面向对象编程中的一个重要特性,主要是用来实现动态联编的.换句话说,就是程序的最终状态只有在执行过程中才被决定,而非在编译期间就决定了.这对于大型系统来说能提高系统的灵活性和扩 ...

  8. Kubernetes: NGINX/PHP-FPM 502错误和优雅结束

    我们有一个运行在Kubernetes上的PHP应用,每个POD由两个独立的容器组成 - Nginx和PHP-FPM. 在我们对应用进行缩容时,遇到了502错误,例如,当一个POD在结束中时,POD里面 ...

  9. 分分钟钟学会Python - 第四章 文件操作

    4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 ...

  10. E: Some index files failed to download. They have been**

    转: E: Some index files failed to download. They have been** 问题描述: 当使用Dockerfile从包含cuda的镜像建立新的image的时 ...