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实现杨辉三角的主要内容,如果未能解决你的问题,请参考以下文章