java杨辉三角
‘壹’ java编写杨辉三角~~~
杨辉三角线的推理:
杨辉三角形性质:
每行数字左右对称,由 1 开始逐渐变大,然后变小,回到 1。
第 n 行的数字个数为 n 个。
第 n 行数字和为 2^(n-1) 。
每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角形。
第 n 行的第 1 个数为 1,第二个数为 1× (n-1) ,第三个数为 1× (n-1) × ( n-2) /2,第四个数为1× (n-1) × (n-2) /2× (n-3) /3…依此类推。
算法原理:
使用一个二维数组 yh[][] 存储杨辉三角形的数据,行和列的大小为所需要输出的行数 Row(本程序中 Row 为 10)。
使用 for 循环使杨辉三角中除了最外层(不包括杨辉三角底边)的数为 1 ;
使用语句 yh[i][j] = yh[i - 1][j - 1] + yh[i - 1][j] 使第 i 行第 j 列的数据等于第(i-1) 行
第(j-1)列的数据与第(i-1)行第(j)列的数据之和,即每个数字等于上一行的左右两个数字之和。
代码的实现
packagecom.practice;
publicclassYangHuiSanJiao
{
publicstaticvoidmain(String[]args){
int[][]a=newint[10][10];
for(intn=0;n<10;n++)
{
a[n][0]=1;
a[n][n]=1;
}
for(intn=2;n<10;n++)
{
for(intj=1;j<n;j++)
{
a[n][j]=a[n-1][j-1]+a[n-1][j];
}
}
for(intn=0;n<10;n++)
{
for(intk=0;k<2*(10-n)-1;k++)
{
System.out.print("");
}
for(intj=0;j<=n;j++)
{
System.out.print(a[n][j]+"");
}
System.out.println();
}
}
}
‘贰’ 杨辉三角java源代码
//打印等腰杨辉三角形
publicclassYHTriangle
{
publicstaticvoidmain(String[]args)
{
//定义二维数组的长度
intlength=10;
//声明二维数组
int[][]arr=newint[length][];
//遍历二维数组
for(inti=0;i<arr.length;i++){
//打印空格
for(intm=0;m<arr.length-1-i;m++){
System.out.print("");
}
//给每个二维数据的元素赋值一维数组
arr[i]=newint[i+1];
//遍历一维数组
for(intj=0;j<arr[i].length;j++){
//第一个元素和最后一个元素的值都是1
if(j==0||j==arr[i].length-1){
arr[i][j]=1;
}else{
//当前一维数组的索引n元素的值,等于前一个数组索引n-1,加上索引n的值
arr[i][j]=arr[i-1][j-1]+arr[i-1][j];
}
//格式化输出元素值
System.out.printf("%4d",arr[i][j]);
}
//换行
System.out.println();
}
}
}
‘叁’ 用java编程杨辉三角的代码
1.杨辉三角形由数字排列,可以把它看做一个数字表,其基本特性是两侧数值均为1,其他位置的数值是其正上方的数字与左上角数值之和,下面是java使用for循环输出包括10行在内的杨辉三角形
2.思路是创建一个整型二维数组,包含10个一维数组。使用双层循环,在外层循环中初始化每一个第二层数组的大小。在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素。
代码如下:
public class YanghuiTriangle {
public static void main(String[] args) {
int triangle[][]=new int[10][];// 创建二维数组
// 遍历二维数组的第一层
for (int i = 0; i < triangle.length; i++) {
triangle[i]=new int[i+1];// 初始化第二层数组的大小
// 遍历第二层数组
for(int j=0;j<=i;j++){
// 将两侧的数组元素赋值为1
if(i==0||j==0||j==i){
triangle[i][j]=1;
}else{// 其他数值通过公式计算
triangle[i][j]=triangle[i-1][j]+triangle[i-1][j-1];
}
System.out.print(triangle[i][j]+"\t"); // 输出数组元素
}
System.out.println(); //换行
}
}
}
‘肆’ java实现杨辉三角
class 杨辉三角{
public static void main(String[]args){
int a[][]=new int[5][5];
for (int i=0;i<a.length ;i++ )
{
for (int j=0;j<a[i].length ;j++ )
{
if (j==0||i==j)
{
a[i][j]=1;
}
else{
if (i>j)
{
a[i][j]=a[i-1][j]+a[i-1][j-1];
}
}
}
}
for (int i=0;i<a.length ;i++ )
{
for (int j=0;j<a[i].length ;j++ )
{
if (i>=j)
{
System.out.print(a[i][j]+"\t");
}
}
System.out.println();
}
}
}
////////////////////////////////////////////////////@希望能帮到你@///////////////////////////////////
‘伍’ Java-杨辉三角
给你写了一个方法来做,不过没完全按照你的代码写,你可以看看我的方法,然后如果一定要套你的代码的话,你稍微改一改应该就可以了,代码如下:
publicstaticvoidtriangle(intn){
int[]row=newint[2*n-1];
row[n-1]=1;
for(inti=0;i<n;i++){
printArray(row);
row=helperArray(row);
}
}
publicstaticint[]helperArray(int[]arr){
intmiddle=(arr.length-1)/2;
int[]result=newint[arr.length];
if(arr[middle]!=0){//中间位不为0时,下一层只有奇数位有值
for(inti=0;i<=(middle-1)/2;i++){
if(middle-2*(i+1)<0)
result[middle-(2*i+1)]=arr[middle-2*i];
else
result[middle-(2*i+1)]=arr[middle-2*i]+arr[middle-2*(i+1)];
result[middle+(2*i+1)]=result[middle-(2*i+1)];
}
}elseif(arr[middle]==0){//中间位为0时,下一层只有偶数位有值
for(intj=0;j<=middle/2;j++){
if(middle-2*j-1<0)
result[middle-2*j]=arr[middle-2*j+1];
else
result[middle-2*j]=arr[middle-2*j-1]+arr[middle-2*j+1];
result[middle+2*j]=result[middle-2*j];
}
}
returnresult;
}
publicstaticvoidprintArray(int[]arr){
for(inta:arr){
if(a==0)
System.out.print("");
else
System.out.print(a);
}
System.out.println();
}
publicstaticvoidmain(String[]args){
triangle(11);//测试层数为11时的杨辉三角
}
有问题再追问。
‘陆’ 杨辉三角java 原理
publicstaticvoidmain(String[]args){
int[][]a=newint[10][10];//申明数组默认初始化值都为0a[i][j]代表第i+1行第j+1个数
for(inti=0;i<10;i++){//赋值三角形两边界恒为1
a[i][i]=1;
a[i][0]=1;
}
//按照杨辉三角定义求值
for(inti=2;i<10;i++){//行数循环从第三行开始,因为第一行与第二行已赋值为1
for(intj=1;j<i;j++){//行内循环每一行数除两边还要计算的数字总数=所在行数-2=i+1-2=i-1
a[i][j]=a[i-1][j-1]+a[i-1][j];//第i+1行第j+1个数=第i行第j个数+第i行第j+1个数
}
}
//输出杨辉三角
for(inti=0;i<10;i++){//行循环
for(intk=0;k<2*(10-i)-1;k++){//行内循环每多一行,1之前的空格数减2
System.out.print("");//输出每行开始时的空格
}
for(intj=0;j<=i;j++){//输出第i+1行的数字
System.out.print(a[i][j]+"");
}
System.out.println();
}
}}