java实现杨辉三角

Posted 乁止

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了java实现杨辉三角相关的知识,希望对你有一定的参考价值。

首先杨辉三角的构成如下

通过分析能得出如下两个规律

1.第n行有n个元素,并且每一行的首尾元素都是1

1.中间的元素等于上面相邻的元素之和,用二维数组表示就是arr[i][j] = arr[i-1][j] + arr[i-1][j-1]

接下来就是实现动态开辟二维数组以此表示杨辉三角形

  int level = myscanner.nextInt();
        //给level(控制层数)开辟空间
        int arr[][] = new int[level][];

注意:这里的二维数组与杨辉三角形的关系是,外层数组控制三角形行数,内层控制每行的元素,所以通过level可以实现输出任意层数的杨辉三角形。

这里在分析两层循环的作用: 

 //杨辉三角算法
        for(int i=0;i<arr.length;i++)  //外层遍历行数
            arr[i] = new int[i + 1]; //给每一行数组开辟空间
            for (int j = 0; j < arr[i].length; j++) 
                if (j== 0 || j == arr[i].length - 1) 
                    arr[i][j] = 1;
                 else 
                    arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
                
            
        

上面已经给外层行数开辟了动态空间,在遍历第一层循环的时候,再给每一行元素开辟空间,这里空间的大小通过规律: 第n行有n个元素,可知每行有(i+1)个元素因为i循环是从=0开始所以+1

arr[i] = new int[i + 1]; //给每一行数组开辟空间

然后就进入第二层循环主要控制每行元素的输出,由规律:每一行的首尾元素都是1,可知通过if语句,可以判断遍历的元素是否在第一个和最后一个位置。

   if (j== 0 || j == arr[i].length - 1) 
                    arr[i][j] = 1;
                 

 执行完if语句后通过else可以输出中间元素的值,而通过规律:中间的元素等于上面相邻的元素之和,可以用二维数组表示如下:

else 
        arr[i][j] = arr[i - 1][j] + arr[i - 1][j - 1];
              

综上就是杨辉三角形的几大要点,总的代码如下: 

import  java.util.Scanner;
public class yanghui 
    public static void main(String[] args)
        Scanner myscanner = new Scanner(System.in);
        System.out.println("请输入杨辉三角的层数");
        int level = myscanner.nextInt();
        //给level(控制层数)开辟空间
        int arr[][] = new int[level][];
        //杨辉三角算法
        for(int i=0;i<arr.length;i++)  //外层遍历行数
            arr[i] = new int[i + 1]; //给每一行数组开辟空间
            for (int j = 0; j < arr[i].length; j++) 
                if (j== 0 || j == arr[i].length - 1) 
                    arr[i][j] = 1;
             else 
                    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();  //每遍历一层输出到下一行
        
    

然后运行效果如图: 

Java之杨辉三角的实现

今天突然想温习一下Java的基础,想了想就写写杨辉三角吧

1、直接法,利用二维数组

 1 import java.util.Scanner;
 2 public class Second
 3 {
 4     public static void main(String[] args) {
 5         // TODO Auto-generated method stub
 6         Scanner in=new Scanner(System.in);
 7         int n=in.nextInt();
 8         int[][] Arr = new int[n][];
 9         in.close();
10         for(int i = 0; i < Arr.length; i++)
11         {
12             Arr[i] = new int[i + 1];
13             Arr[i][0] = 1;
14             Arr[i][i] = 1;
15             for(int j = 0; j < Arr[i].length - 1; j++)
16                 if(j >= 1 && i > 1)
17                     Arr[i][j] = Arr[i - 1][j - 1] + Arr[i - 1][j];
18         }
19         for(int i = 0; i < Arr.length; i++)
20         {
21             for(int j = 0; j < Arr.length - Arr[i].length; j++)
22                 System.out.print(" ");
23             for(int j = 0; j < Arr[i].length; j++)
24             {
25                 System.out.print(Arr[i][j]);
26                 System.out.print(" ");
27             }
28             System.out.println();
29         }
30     }
31 }

 

2、使用递归方式

 1 public class Second
 2 {
 3     public static int assign(int x,int y)
 4     {
 5         int z;  
 6         if(y==1||y==x)
 7             return 1; 
 8         z=assign(x-1,y-1)+assign(x-1,y);  
 9         return z;
10     }
11     public static void main(String args[])
12     {
13         for (int i=1; i<=5; i++) 
14         {
15             for (int j=1; j<5-i+1; j++)
16                 System.out.print(" ");//打印空格  
17             for(int j=1;j<=i;j++)
18                 System.out.print(assign(i,j)+" ");
19         System.out.println();
20         }
21     }
22 }

 

  

作者:耑新新,发布于  博客园

转载请注明出处,欢迎邮件交流:zhuanxinxin@aliyun.com

以上是关于java实现杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章

Java之杨辉三角的实现

Java语言杨辉三角

java实现杨辉三角

Java实现杨辉三角形

Java小案例——使用双重for循环实现杨辉三角的输出

Java基础------杨辉三角(递归实现)