杨辉三角的实现(Java)
杨辉三角的实现
一、什么是杨辉三角
杨辉三角是二项式系数在三角形中的一种几何排列。每个数等于它上方两数之和。每行数字左右对称,由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)的更多相关文章
- Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
- 使用Java打印杨辉三角
package 杨辉三角; import java.util.Scanner; public class 三角 { private static Scanner scn; public static ...
- Java数组的应用:案例:杨辉三角,三维数组,字符串数组
//import java.util.Arrays; //包含Arrays //import java.util.Random; public class HelloWorld { public st ...
- Java实现杨辉三角
杨辉三角用了两种方法解决 二维数组/递归方法 +—————————————————————————— import java.util.Scanner; public class YangHui02 ...
- [Java练习题] -- 1. 使用java打印杨辉三角
package cn.fzm.demo1.array; import java.util.Scanner; /* * 需求:打印杨辉三角形(行数可以键盘录入) 1 1 1 1 2 1 1 3 3 1 ...
- Java之杨辉三角的实现
今天突然想温习一下Java的基础,想了想就写写杨辉三角吧 1.直接法,利用二维数组 import java.util.Scanner; public class Second { public sta ...
- 杨辉三角的打印(Java)
// //输入指定的行数,打印杨辉三角 // //每个数等于它上方两数之和. //每行数字左右对称,由1开始逐渐变大. //第n行的数字有n项. // // // //可从打印菱形的思想出发:???? ...
- java实现组合数_n!_杨辉三角_组合数递推公式_回文数_汉诺塔问题
一,使用计算机计算组合数 1,设计思想 (1)使用组合数公式利用n!来计算Cn^k=n!/k!(n-k)!用递推计算阶乘 (2)使用递推的方法用杨辉三角计算Cn+1^k=Cn^k-1+Cn^k 通过数 ...
- 1233: 输出杨辉三角前n行(Java)
WUSTOJ 1233: 输出杨辉三角前n行 题目 原题链接 Description 输出杨辉三角前n行. Input 输入一个数n(n <= 9) Output 输出杨辉三角前n行.(注意行末 ...
- 实验----Java的二维数组的应用及杨辉三角的编写
(1) 编写一个程序,生成一个10*10的二维随机整数数组,并将该数组的每行最大值保存于一个一维数组中,将每列平均值保存于另外一个一维数组中并分别输出. (2) 编程输出杨辉三角的前10行. 找出一个 ...
随机推荐
- 009.NET5_程序的发布运行
发布 相差了web.config文件 脚本启动 cmd,进入程序根目录. 带参启动 其实,最终与web.config中效果一样
- 解决springmvc使用@ResponseBody返回String类型字符串中文乱码问题
问题分析: 首先: 确定的是只有当返回值是 String时才会出现中文乱码,而当返回值是Map<String, Object>或者是其它类型时,并没有中文乱码的出现. 然后找原因: 原因是 ...
- webpack 5 new features All In One
webpack 5 new features All In One Webpack 5 release (2020-10-10) https://webpack.js.org/blog/2020-10 ...
- GIF : 超好用的gif 图片制作工具: LICEcap
超好用的gif 图片制作工具: LICEcap simple animated screen captures http://www.cockos.com/licecap/https://github ...
- Electron Security All In One
Electron Security All In One https://www.electronjs.org/docs/tutorial/security CSP Content-Security- ...
- how to updating Node.js and npm
how to updating Node.js and npm 1 Installing Node.js and updating npm How do I update Node.js ? Not ...
- React Hooks: useMemo All In One
React Hooks: useMemo All In One useMemo https://reactjs.org/docs/hooks-reference.html#usememo refs x ...
- full page screen capture in js
full page screen capture in js html2canvas https://html2canvas.hertzen.com/ https://github.com/nikla ...
- H5 & animation
H5 & animation https://m.tb.cn/h.VYB7BAx?sm=51fda6 UA checker webp image & css animation CDN ...
- PAA房产智慧社区:解决社区管理服务的痛点难点
社区,是社交与生活的舞台,更是家的延伸.社区之所有能够有所创新发展,得益于借助数字化和智能化.智能化给社区带来的便利体现在社区门禁可以人脸识别:AI的摄像头可以自动捕获异常的现象,便于社区管理员第一时 ...