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)列的数据之和,即每个数字等于上一行的左右两个数字之和。

    代码的实现

    package com.practice; 

    public class YangHuiSanJiao  

           public static void main(String[] args) { 
            int [][]a = new int [10][10]; 
               for(int n = 0; n < 10;n++) 
               { 
                 a[n][0] = 1; 
                 a[n][n] = 1; 
               } 
               for(int n = 2; n <10; n++) 
               { 
                for(int j = 1; j < n; j++) 
                { 
                 a[n][j] = a[n -1][j -1] + a[n - 1][j]; 
                } 
               } 

               for(int n = 0; n < 10; n++) 
               { 
                for(int k = 0; k < 2 * (10 - n) - 1; k++) 
                { 
                 System.out.print(" "); 
                } 
                for(int j = 0; j <= n; j++) 
                { 
                 System. out.print(a[n][j] + "   "); 
                } 
                System.out.println(); 
               } 

     } 
    }

温馨提示:答案为网友推荐,仅供参考
第1个回答  2018-04-18

初学java,在网上找的杨辉三角形代码并不一地正确和适用,那些代码一般用于集成开发环境,并不适用于初学者。

工具/原料:editplus,jdk,java。

方法/步骤:

    打开editplus,点击文件--新建文件--java。不想下这个软件的可以新建一个记事本。

    然后把代码复制进去,不过要注意class后面的命名要和文件名字一致

    原创代码(非网上照搬复制,个人原创,真实有效):

    import java.util.Scanner;

    class demo1 

    {

    public static void main(String[] args) 

    {

    System.out.println("请输入杨辉三角的行数");

    Scanner in=new Scanner(System.in);

    int a=in.nextInt();

    int arr[][]=new int[a][a+2];

    for (int i=1;i<=a ; i++)

    arr[i-1][0]=0;

    arr[i-1][i+1]=0;

    }

    if (a==1)

    {

    System.out.println(" 1 ");

    }

    if (a==2)

    {

    System.out.println("   1 ");

    System.out.println(" 1 2 1");

    }

    else

    {

    arr[0][1]=1;

    for (int j=2;j<=a ;j++ )

    {

    for (int k=1;k<=j ;k++ )

    {

    arr[j-1][k]=arr[j-2][k-1]+arr[j-2][k];

    }

    }

    for (int i=1;i<=a ;i++ )

    {

    for (int space=0;space<=a-i ;space++ )

    {

    System.out.print(" ");

    }

    for (int j=1;j<=i ;j++ )

    {

    System.out.print(arr[i-1][j]+" ");

    }

    System.out.println();

    }

    }

    }

    }

    以editplus为例,把代码复制进去后,点击文件--保存--D盘,文件名为demo1.java。 如果用记事本保存为--所有类型文件--demo1.java。

    打开开始菜单,输入cmd

    输入d:  

    进入d盘

    输入javac demo1.java 编译,如果没有弹出什么则说明编译成功。

    输入java demo1

    然后就OK了

本回答被网友采纳
第2个回答  2015-05-12
public class Test {
public static void main(String args[]) {
int a = 10;
int b[][];
b = new int[a][];
for (int i = 1; i <= 10; i++) {
b[i - 1] = new int[i];
}
for (int j = 0; j < 10; j++) {
for (int k = 0; k <= j; k++) {
if (j == 0 || k == 0 || k == j)// 分支
{
b[j][k] = 1;// 等于1的
continue;
} else {
b[j][k] = b[j - 1][k - 1] + b[j - 1][k];// 计算值
}
}
}
for (int m = 0; m < 10; m++) {
for (int n = 0; n <= m; n++) {
System.out.print(b[m][n] + " ");// 循环输出
}
System.out.println(" ");
}
}
}

本回答被网友采纳
第3个回答  2017-07-11

好巧我也写这个作业

public class Demo12 { 
public static void main(String[] args){
printYH();
}

private static void printYH() {
Scanner sc = new Scanner(System.in);
System.out.println("请输入一个整数代表几行");
int n = sc.nextInt();
//创建二维数组
int[][] arr = new int[n][n];
for (int i = 0; i < arr.length; i++) {
arr[i] = new int[i+1];
}
//赋值
for (int i = 0; i < arr.length; i++) {
arr[i][0] = 1;
arr[i][i] = 1;
for (int j = 1; j < i; j++) {
arr[i][j] = arr[i-1][j]+arr[i-1][j-1];
}
}
//打印
for (int i = 0; i < arr.length; i++) {
for (int j = 0; j < arr[i].length; j++) {
System.out.print(arr[i][j]+"\t");
}
System.out.println();
}
}

}