杨辉三角JAVA版代码算法

合集下载

杨辉三角经典例题

杨辉三角经典例题

杨辉三角经典例题
杨辉三角是一种数学图形,由数字排列组成。

它由中国数学家杨辉在公元1261年发明。

杨辉三角的构造规律很简单,每一行的两端都是1,其他数是上一行左右两数之和。

例如,第三行的数字是1 2 1,第四行的数字是1 3 3 1。

杨辉三角在组合数学中,有着广泛的应用,适用于二项式定理的展开、多项式的幂的展开、组合数的计算等问题。

以下是杨辉三角的一个经典例题:给定一个整数n,输出杨辉三角的前n行。

例如,当n=5时,输出:
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
解题思路:使用二维数组来表示杨辉三角,先将每一行的两端元素赋值为1,再根据构造规律计算中间的数字。

代码实现:
int main() {
int n;
cin >> n;
int a[100][100] = {0};
for (int i = 1; i <= n; i++) {
a[i][1] = a[i][i] = 1;
for (int j = 2; j < i; j++) {
a[i][j] = a[i-1][j-1] + a[i-1][j];
}
}
for (int i = 1; i <= n; i++) {
for (int j = 1; j <= i; j++) {
cout << a[i][j] << " ";
}
cout << endl;
}
return 0;
}
以上就是关于杨辉三角经典例题的介绍。

杨辉三角递归的应用原理

杨辉三角递归的应用原理

杨辉三角递归的应用原理1. 什么是杨辉三角杨辉三角,又称帕斯卡三角形,是一个三角形的数字表格,其中的数字是通过组合数学的方法获得的。

它以法国数学家布莱兹·帕斯卡命名,他在1653年首次引入了这个概念。

杨辉三角的特点是,每个数字是它上方两个数字的和。

2. 杨辉三角的生成方法杨辉三角可以通过递归的方式生成,递归是一种在函数中调用自身的编程技巧。

下面是一种常见的递归生成杨辉三角的方法:def generate_pascal_triangle(n):if n ==0:return []elif n ==1:return [[1]]else:previous_triangle = generate_pascal_triangle(n -1)previous_row = previous_triangle[-1]row = [1] + [previous_row[i] + previous_row[i +1] for i in ran ge(len(previous_row) -1)] + [1]previous_triangle.append(row)return previous_triangle以上是使用Python语言编写的一个递归函数,用于生成一个N行的杨辉三角。

输入参数n表示生成的杨辉三角的行数,返回结果是一个由列表组成的三角形。

3. 杨辉三角的应用原理杨辉三角有着广泛的应用,它涉及到很多不同的数学和计算问题。

下面将介绍其中几个常见应用的原理。

3.1. 组合数杨辉三角的每个数都是由上方两个数相加而来的,这种性质使得杨辉三角可以用于计算组合数。

杨辉三角的每行都可以看作是二项式展开中的系数,如下所示:11 11 2 11 3 3 11 4 6 4 1...其中每个数代表的是从左上角开始,到该位置的路径数。

例如,第3行第2个数表示从左上角到该位置的路径数为3。

在组合数学中,我们可以使用杨辉三角中的数值计算组合数,而无需使用公式计算。

杨辉三角的编程思路-概述说明以及解释

杨辉三角的编程思路-概述说明以及解释

杨辉三角的编程思路-概述说明以及解释1.引言1.1 概述杨辉三角是一种数学模式,它以二项式系数为基础构成一个三角形状的数字图案。

它的命名源自中国古代数学家杨辉,他在13世纪提出并发展了这一概念。

杨辉三角具有许多有趣的特点和性质,因此在编程领域中备受关注。

它不仅在理论研究中有广泛的应用,还在实际编程中发挥着重要作用。

通过编程生成杨辉三角,我们能够深入了解其生成规律和数值特征。

同时,杨辉三角也为我们提供了一种探索组合数学和数论等领域的途径。

本文将介绍杨辉三角的定义和特点,并讨论其生成方法。

通过分析其规律和结构,我们将揭示编程生成杨辉三角的思路和方法。

最后,我们将总结编程生成杨辉三角的核心思想,并展望它在实际应用中的潜力。

在下一节中,我们将详细讨论杨辉三角的定义和特点,以便更好地理解它的生成过程。

1.2 文章结构文章结构是指文章中各个部分的组织和安排方式,目的是使读者能够清晰地理解文章的主题和内容。

本文以"杨辉三角的编程思路"为主题,下面将介绍一下文章的结构安排。

文章的结构主要由引言、正文和结论三部分组成。

引言部分介绍了文章的背景和目的,包括概述、文章结构和目的。

在概述中,可以简要介绍杨辉三角的概念和应用领域,引起读者的兴趣。

文章结构部分用于明确告诉读者文章的组织方式,让读者对整篇文章的结构有个整体的了解。

目的部分则明确了本文的写作目标,即介绍杨辉三角的编程思路。

正文部分是文章的核心内容,主要包括杨辉三角的定义和特点,以及生成方法。

在2.1部分中,可以首先介绍什么是杨辉三角,它的定义和特点。

然后,可以深入探讨杨辉三角的生成方法,包括使用递推关系、二项式展开式等方法。

可以结合具体的例子和图表,向读者清晰展示杨辉三角的生成过程和特点。

结论部分对文章进行总结,并展望杨辉三角在实际应用中的潜力。

在3.1部分,可以对杨辉三角的编程思路进行一次简洁明了的总结,强调编程过程中需要注意的关键点和思考方式。

杨辉三角

杨辉三角

杨辉三角要求:实现10行杨辉三角元素的存储以及输出。

杨辉三角是数学上的一个数字序列,该数字序列如下:11 11 2 11 3 3 11 4 6 4 1该数字序列的规律为,数组中第一列的数字值都是1,后续每个元素的值等于该行上一行对应元素和上一行对应前一个元素的值之和。

例如第五行第二列的数字4的值,等于上一行对应元素3和3前面元素1的和。

实现思路:杨辉三角第几行有几个数字,使用行号控制循环次数,内部的数值第一行赋值为1,其它的数值依据规则计算。

假设需要计算的数组元素下标为(row,col),则上一个元素的下标为(row –1,col),前一个元素的下标是(row –1,col –1)。

实现代码如下:public class yanghuisanjiao {public static void main(String[] args){int[][] arr = new int[10][10];//循环赋值for(int row = 0;row < arr.length;row++){for(int col = 0;col <= row;col++){if(col == 0){ //第一列arr[row][col] = 1;}else{arr[row][col] = arr[row - 1][col] + arr[row - 1][col - 1];}}}//输出数组的值for(int row = 0;row < arr.length;row++){for(int col = 0;col <= row;col++){System.out.print(arr[row][col]);System.out.print(' ');}System.out.println();}}}运行结果:11 11 2 11 3 3 11 4 6 4 11 5 10 10 5 11 6 15 20 15 6 11 7 21 35 35 21 7 11 8 28 56 70 56 28 8 11 9 36 84 126 126 84 36 9 1。

Java表达式求值、杨辉三角实验报告

Java表达式求值、杨辉三角实验报告

一.实验目的实现杨辉三角和表达式的封装二.实验软件环境本实验是在MyEclipse 9.01M1编写和运行的三.实验内容(一)实验要求1. 输出杨辉三角前N项,N为参数2. 表达式求值:输入一个表达式,输出它的值,其中要用到java.util.Stack (二)实验代码程序代码:1)杨辉三角:/***功能:用二维数组实现杨辉三角*时间:2011-05-01**/package b1;import java.io.*;public class Pascal{public Pascal(){play();}public void play(){BufferedReader br = new BufferedReader(new InputStreamReader(System.in));System.out.print("请输入n值:");int n = 0;try {n = Integer.parseInt(br.readLine());} catch (NumberFormatException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}int array[][] = new int[n][2*n-1];//判断是否为奇数if( n%2 == 1 ){for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1 ;j++){//首先给前5-i个元素赋值0if(j<=n-i)array[i-1][j-1] = 0;//输出第一个“1”和最后一个“1”else if((j==(n-i+1))||(j==n+i-1))array[i-1][j-1] = 1;else if((j < n+i-1)&&(j > n-i+1)){if((j-i)%2 == 1)array[i-1][j-1] = 0;elsearray[i-1][j-1] = array[i-2][j-2] + array[i-2][j];}}}}//为偶数所进行的操作else{for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1; j++){//首先给前5-i个元素赋值0if(j<=n-i)array[i-1][j-1] = 0;//输出第一个“1”和最后一个“1”else if((j==(n-i+1))||(j==n+i-1))array[i-1][j-1] = 1;else if((j < n+i-1)&&(j > n-i+1)){if((j-i)%2 == 0)array[i-1][j-1] = 0;elsearray[i-1][j-1] = array[i-2][j-2] + array[i-2][j];}}}}/*输出数组*/for(int i=1; i<=n; i++){for(int j=1; j<=2*n-1; j++){if(array[i-1][j-1] == 0){System.out.print(" ");}elseSystem.out.print(array[i-1][j-1]);System.out.print(" ");}System.out.println();}}public static void main(String argc[]){Pascal p = new Pascal();}}2)表达式求值,代码如下:1)Stack类:用来存储表达式子元素的类,代码如下:package btwo;public class Stack {private int maxLen;private int size;private char c[];public Stack(int maxLen) {this.maxLen = maxLen;c = new char[maxLen];size = 0;}public void push(char v){c[size++] = v;}public char pop(){return c[--size];}public boolean isEmpty(){return size == 0;}}2)ExplainPostfix类:实现将输入的表达式转成后缀表达式,代码如下:package btwo; public class ExplainPostfix {String in; String out = "";Stack s;public ExplainPostfix(String in){System.out.println("计算表达式为:"+in);this.in = in;}public void display(){System.out.println("后缀表达式为:"+out);}//转换成后缀表达式public void toPraser(){s = new Stack(in.length());for(int i=0;i<in.length();i++){char c = in.charAt(i);switch(c){case'+':case'-':getOpter(c,1);break;case'*':case'/':getOpter(c,2);break;case'(':s.push(c);break;case')':getParen();break;default:out = out + c;}}while(!s.isEmpty()){out = out + s.pop();}}public void getOpter(char c,int prec1){ out = out + 'a';while(!s.isEmpty()){char optop = s.pop();if(optop == '('){s.push(optop);break;}else{int prec2 = 0;if(optop == '+' || optop== '-'){prec2 = 1;}else{prec2 = 2;}if(prec1>prec2){s.push(optop);break;}else{System.out.println("op:"+optop);out = out + optop;}}}s.push(c);}public void getParen(){while(!s.isEmpty()){char c = s.pop();if(c == '(')break;elseout = out + c;}}public static void main(String[] args) {ExplainPostfix p = newExplainPostfix("(11+2)*5");p.toPraser();p.display();}}3)CalculateExpression类:功能实现将后缀表达式进行计算,代码如下:package btwo;public class CalculateExpression {String in;Stack s; public CalculateExpression(String in) { this.in = in;}public CalculateExpression(){play();}public static void main(String args[]){ExplainPostfix p1 = newExplainPostfix("(21+4)*(1+3*2)");p1.toPraser();p1.display();CalculateExpression p = newCalculateExpression(p1.out);p.doPraser();p.display();}//开始计算后缀表达式public void doPraser(){while(true){int a,b,c,d;a = in.indexOf("+");b = in.indexOf("-");c = in.indexOf("*");d = in.indexOf("/");int n = Math.max(a, b);n = Math.max(n, c);n = Math.max(n, d);if(a != -1){n = a;}if(b<n && b!= -1){n = b;}if(c<n && c!= -1){n = c;}if(d<n && d!= -1){n =d;}if(a == -1 && b == -1 && c == -1 && d == -1){break;}String s1 = charAt(n-1);String s2 =charAt(n-2-s1.length());int v = 0;if(n == a){v = Integer.parseInt(s1) +Integer.parseInt(s2);}else if(n == b){v = Integer.parseInt(s2) -Integer.parseInt(s1);}else if(n == c){v = Integer.parseInt(s2) *Integer.parseInt(s1);}else{v = Integer.parseInt(s2) /Integer.parseInt(s1);}String s = ""+v;if(s.equals("0")){s = "";}else{s = s +"a";}in =in.substring(0,stIndexOf(s2))+v+in.substring(n+1,in.length());}}public void display(){System.out.println("结果为:"+in);}public String charAt(int i){String str = "";char c = in.charAt(i);if(c == '+' || c == '-' || c == '*' || c == '/'){str = str + c;return str;}else{while(c != 'a'){str = c + str ;if(i == 0){break;}c = in.charAt(--i);if(c == '+' || c == '-' || c == '*' || c == '/'){break;}}}return str;}}四.实验的结果及分析1. 杨辉三角结果:2. 算术表达式结果:五.实验心得体会试验后熟悉封装思想,使用基本Java算法。

算法学习——递推之杨辉三角

算法学习——递推之杨辉三角

算法学习——递推之杨辉三⾓算法描述杨辉三⾓算法思路将杨辉三⾓看成⼀个⼆维数组,开头和末尾都为1第⼀⾏和第⼆⾏已经被前⾯的1给赋值了,所以我们直接从第三⾏开始赋值,a[2][1]开始,因为下标是从0开始的,a[2][1] = a[1] [0]+a[1][1],也就是等于2,依次递推下去打印(for循环),每打印出⼀⾏则换⼀⾏,System.out.println我的打印处理没有处理好,如果数组有两位数,打印出来就不是很美观算法实现Scanner scanner = new Scanner(System.in);int n = scanner.nextInt();int[][] a = new int [n][n];//初始化条件,头部和尾部都是为1for(int i=0;i<n;i++){a[i][0]=1;a[i][i]=1;}//第3⾏开始,下标为2for(int i=2;i<n;i++){//列从第⼆个开始,到倒数第⼆个,下标为1到n-1for(int j=1;j<n-1;j++){a[i][j] = a[i-1][j-1]+a[i-1][j];}}for(int i=0;i<n;i++){//画开头空格for(int m=n-i-1;m>0;m--){System.out.print(" ");}for(int j=0;j<=i;j++){System.out.print(a[i][j]+" ");}System.out.println(""); //⼀⾏结束换⾏}结果。

Java实现杨辉三角算法

Java实现杨辉三角算法

Java实现杨辉三⾓算法package test;public class YangHuiSanJiao {public static void main(String[] args) {//杨辉三⾓有什么特点//外层都是1,内层数是两个数的和/*111121133114641*///⼤概的思路就是声明⼀个⼆维数组int[][] i = new int[10][];//为什么这⾥还可以再new⼀个数组//每⼀⾏就是⼀个数组,每⼀个数组中,⼜包含⼀个数组//现在相当于有10个数组,但是这⼗个数组的元素不固定,需要通过for循环来赋值//第⼀个数组没有什么规律,就是只有⼀个数,⽽且是1,所以直接指定//⼀般来说,应该是i[0]=某⼀个数,但是这⾥是⼀个数组,//然后指定第⼀⾏这唯⼀的⼀个数就是1i[0] = new int[1];i[0][0] = 1;for (int j = 1; j < i.length; j++) {i[j] = new int[j+1];i[j][0] = i[j][j] = 1;//中间元素如何指定for (int j2 = 1; j2 < j; j2++) {i[j][j2] = i[j-1][j2-1] + i[j-1][j2];}}//现在开始输出元素for (int j3 = 0; j3 < i.length; j3++) {//⼆维数组如何遍历for (int k = 0; k < i[j3].length; k++) {System.out.print(i[j3][k]+" ");}System.out.println();}}}。

杨辉三角python代码简单

杨辉三角python代码简单

杨辉三角python代码简单杨辉三角是一种数学图形,可以用来展示二项式系数的规律。

在Python中,我们可以使用循环和列表来生成杨辉三角。

以下是一个简单的Python代码,用于生成杨辉三角:```def pascal_triangle(n):triangle = []for i in range(n):row = [1]if i > 0:for j in range(i-1):row.append(triangle[i-1][j] + triangle[i-1][j+1]) row.append(1)triangle.append(row)return trianglen = int(input("请输入要生成的行数:"))triangle = pascal_triangle(n)for row in triangle:print(row)```这段代码中,我们定义了一个函数`pascal_triangle`,它接受一个整数参数n,表示要生成的杨辉三角的行数。

在函数内部,我们创建了一个空列表`triangle`,用于存储每一行的数字。

然后我们使用一个循环来遍历每一行。

对于第i行(从0开始计数),我们先创建一个包含1个元素的列表`row`,表示该行的第一个数字为1。

如果i大于0(即不是第一行),则需要根据上一行的数字来计算当前行。

我们使用另外一个循环来遍历上一行中除去首尾两个元素以外的所有元素。

对于每个元素,我们将其与它右侧的元素相加,并将结果添加到当前行的列表`row`中。

最后,我们将1添加到当前行的末尾,表示该行的最后一个数字也为1。

将当前行添加到`triangle`列表中,表示我们已经生成了这一行。

最后,我们使用一个循环来遍历整个杨辉三角,并将每一行打印出来。

输出结果如下:```请输入要生成的行数:5[1][1, 1][1, 2, 1][1, 3, 3, 1][1, 4, 6, 4, 1]```这就是一个简单的Python代码,用于生成杨辉三角。

JavaScript实现杨辉三角

JavaScript实现杨辉三角

JavaScript实现杨辉三⾓
杨辉三⾓的算法还是⽐较简单易懂的,只是要想在控制台更好的实现三⾓输出就没那么简单了。

根据⽬前所学,使⽤了⼆维数组实现杨辉三⾓。

每⼀⾏都是⼀个内层数组。

在输出的时候再将每⼀个内层数组转换成字符串来输出,这样就不会出现中括号,看起来就更美观。

要想第⼀⾏居中,就根据所要输出的⾏数来给每⼀个内层数组前⾯添加空格。

⽽且要考虑⾏数越多,下⾯的每⼀个数字的长度就越⼤,然后我就根据最⼤数字的长度来给每⼀个数字后⾯加空格,使每⼀个数字所占的宽度相同,⽅便排列。

我这个⽅法也是假的,不是真正的居中对齐,只是看起来还算整齐,⽽且基本不会受到数字位数的影响。

我还试了使⽤制表符来做,但是空得太宽了,⽽且当数字长度超过四位还是五位的话,也会使⾦字塔变形。

下⾯代码就是根据⽤户输⼊⾏数来给⼆维数组赋值:
下⾯代码是使之成⾦字塔形式输出:
实现的效果:。

编程实现杨辉三角

编程实现杨辉三角

杨辉三角
杨辉三角出现在高中数学里面,它体现了组合数之间的性质,它与二项式定理之间有着千丝万缕的联系。

在这里我们来说,如何通过编程实现杨辉三角的打印。

首先来看杨辉三角的特点:
(1) 每行数字左右对称,由1开始逐渐变大,再逐渐减小;
(2) 第n 行恰好有n 个数字;
(3) 第n 行第m 个数可表示为1
1m n C --,即从n-1个不同元素中取出1m -个的组合数;
(4) 每个数字等于上一行的左右两个数字之和,可用此性质写出整个杨辉三角。


第n+1行的第i 个数等于第n 行第1i -个数与第i 个数之和,这也是组合数性质之一,即11i i i n n n C C C -+=+。

代码实现一:
代码实现二:。

java实现杨辉三角的三种方法(含代码和解析且全面)

java实现杨辉三角的三种方法(含代码和解析且全面)

前言既然是实现杨辉三角,就要知道什么是杨辉三角。

如下图,就是两种杨辉三角。

(1)等边形状的杨辉三角(2)直角形状的杨辉三角在知道这两种都是杨辉三角之后,我们就来实现利用java语言打印出杨辉三角。

杨辉三角的规律:(1)第n行有n个数字.(2)每一行的开始和结尾数字都为1.用二维数组表示就是a[i][0]=1; a[i][j]=1(当i==j时);(3)第n+1行的第i个数字等于第n行的i-1个数字加上第n行的i个数字。

用二维数组表示就是a[i+1][j]=a[i][j-1]+a[i][j];代码部分(1)创建一个长度为10,宽度为10的二维数组,但赋值和输出时只输出杨辉三角那个范围的数。

首先,我们得理解定义一个长度和高度都为10的二维数组时,他到底做了什么。

数组的图为可以看出,实际是给每个位置上都赋值为0;而我们要做的是给A部分的位置赋值并且输出,而B部分的位置不用管。

A部分与B部分的区别在于:A部分的横坐标大于等于纵坐标。

用数组中的话就是i<=j;知道要赋值的范围,那么for循环的语句就知道了啦,就为而接下来就是利用杨辉三角的特点实现赋值并输出,这里就直接看下面的完整代码吧。

第一种该方法完整代码:最后的实现效果就是下图。

(2)直接创建一个和杨辉三角形状一样的数组再赋值输出。

在前面我们使用了一个长10高10的数组,但是最后我们只用了它的A部分,思考一下,为什么我们不直接创建一个和前面那个A部分形状一样的数组呢?形状如下图:知道基本的概念之后,我们先创建该数组,首先可以确定的是这里的高度还是为10,也就是横坐标最大还是为10,但是纵坐标就是小于等于该行的横坐标。

用代码表示就是:在数组创建好之后,再就是赋值了,之前赋值用的是j<=i,但是此处数组的范围就是杨辉三角的范围,所以可以直接对数组进行内外两层循环。

用代码表示就是:而赋值的代码也是一样,不过这种方法就可以赋值完再输出,不用像第一种一样赋值时输出。

数据结构杨辉三角

数据结构杨辉三角
{
S2=Q.base[Q.f];
cout<<S1+S2<<" ";
EnQueue(Q,S1+S2);
DeQueue(Q,S1);//删除对头,并把对头元素给s1;
}
cout<<1<<" "<<endl;
EnQueue(Q,1);
}
return OK;
}
/* 1
11
1 2 1
1 331
1 4 6 4 1
杨辉三角杨辉三角的规律c语言杨辉三角杨辉三角公式杨辉三角java杨辉三角ppt杨辉三角c打印杨辉三角编程杨辉三角java输出杨辉三角
/*数据结构工程编程:杨辉三角*/
//链队列
#define OK 1
#define error 0
#definemaxsize100
#include "iostream.h"
statusInitQueue(Squeue& Q);
//求队列的长度
intQueuelength(Squeue& Q);
//把e插入队列(插入在队尾进行)
statusEnQueue(Squeue&Q,Qelemtypee);
//删除元素(删除在对头进行)
statusDeQueue(Squeue&Q,Qelemtype&e);
return k;
}
//把e插入队列(插入在队尾进行)
statusEnQueue(Squeue&Q,Qelemtypee)
{
if((Q.r+1)%maxsize==Q.f)

杨辉三角 Java

杨辉三角 Java
System.out.print(a[i][j] + " ");
}
System.out.println();
}
}
}
}
}
///////////////////////////////////////////////////////////////////////////////////////////////////////////
//打印棱形
package test;
import java.util.Scanner;
System.out.print(a);
// if (j == 0) {
// System.out.print(" ");
// System.out.print(a);
// }
// if (j == 1) {
// System.out.print(" ");
//实现字符串的反转:
package stringreverse;
import java.util.Scanner;
public class Stringreverse {
static String Charattext(String s){
String str="";
k--;System.out.print(a);}
}
System.out.println();
}
}
public static void main(String args[]) {
Scanner input=new Scanner(System.in);

杨辉三角 Java代码 可以根据输入 输出相应行数的杨辉三角

杨辉三角 Java代码 可以根据输入  输出相应行数的杨辉三角
array[i - 1][j] = array[i - 2][j - 1];
continue ;
}
if (array[i - 2][j - 1] > 0 || array[i - 2][j + 1] > 0) {//有数字出现的位置
array[i - 1][j] = array[i - 2][j - 1] + array[i - 2][j + 1];
//数组中最长的位数
int weishu = (max+"").length();
//输出结果
for (int i = 0; i < number; i++) {
for (int j = 0; j < length; j++) {
print(weishu, array[i][j]);
}
SysteБайду номын сангаас.out.println();
已经默认赋值为0第一行处理array0length第一个位置arrayi最后一个位置arrayi有数字出现的位置arrayi获取数组中的最大值longmax数组中最长的位数intweishumax
/**
* @see打印出杨辉三角形(这是用的多维数组的形式,也可以根据公式计算),输出样式已经进行了调整
for (int i = 0; i < (weishu - showWeishu) / 2; i++) {
System.out.print(" ");
}
if (show == 0) {
System.out.print(" ");

杨辉三角形部分代码解析

杨辉三角形部分代码解析

关于打印三角形前10行的程序,从报告中整理出了20个版本。

先将前5个版本完成批注,分享给大家!条条大路通罗马,老师不评价程序代码实现效率的高低!建议大家参考各种版本,扩展自己的思路!版本1:public class yanghui {public static void main(String[] args) {int i,j;int a[][]=new int[10][10];for(i=0;i<=9;i++)a[i][0]=a[i][i]=1;for(i=2;i<=9;i++)for(j=1;j<i;j++)a[i][j]=a[i-1][j-1]+a[i-1][j];for(i=0;i<=9;i++)for(j=0;j<=i;j++){ System.out.printf("%d",a[i][j]);if(i==j) { System.out.println (); continue; }}}}版本2:public class yanghuisanjiao {public static void main(String[] args) {int row = 10; // 三角的行数int[][] result = new int[row][row];for (int i = 0; i < row; i++) { // 行result[i][0] = 1;System.out.print(result[i][0] + "\t");for (int j = 1; j <= i; j++) { // 列result[i][j] = result[i - 1][j - 1] + result[i - 1][j];System.out.print(result[i][j] + "\t");}System.out.println();}}}版本3:public class YHSJ {public static void main(String[] args) {int[][] a=new int[10][10];for(int i=0;i<10;i++)for(int j=0;j<10;j++){if (j<i){ a[i][j]=1;if(j==0){ a[i][j]=1; }else{a[i][j]=a[i-1][j-1]+a[i-1][j]; }}else{ a[i][j]=1; }}for(int i=0;i<10;i++){for(int k=1;k<=10-i;k++)System.out.printf(" ");for(int j=0;j<=i;j++){System.out.printf("%3d ",a[i][j]);}System.out.printf("\n");}}}版本4:public class YangHui {public static void main(String[] args) { final int ROW = 10;int a[][] = new int[ROW + 1][];for (int i = 0; i <= ROW; i++) {a[i] = new int[i + 1]; // 指定每行的列数}yanghui(a, ROW);}static void yanghui(int a[][], int ROW) { for (int i = 0; i <= ROW; i++)for (int j = 0; j <= a[i].length - 1; j++) {if (i == 0 || j == 0 || j == a[i].length - 1) a[i][j] = 1;elsea[i][j] = a[i - 1][j - 1] + a[i - 1][j];}for (int i = 0; i <= ROW; i++) {for (int j = 0; j <= a[i].length - 1; j++)System.out.print(a[i][j] + "\t"); System.out.println();}}版本5:public class yanghui{public static void main(String arg[]){int[][]arry=new int[10][];int i,j ;arry[0]=new int[1];arry[1]=new int[2];arry[0][0]=1 ;arry[1][0]=1 ;arry[1][1]=1 ;System.out.printf("%d\n",arry[0][0]);System.out.printf("%d",arry[1][0]);System.out.printf(" %d\n",arry[1][1]);for(i=2;i<10;i++){arry[i]=new int[i+1];arry[i][0]=1 ;arry[i][i]=1 ;System.out.print(arry[i][0]+" ");for(j=1;j<i;j++){ arry[i][j]=arry[i-1][j-1]+arry[i-1][j];System.out.print(arry[i][j]+" ");}System.out.printf("%d\n",arry[i][i]);}}。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
始逐渐变大,然后变小,回到 1。 2、第 n 行的数字个数为 n 个。 3、第 n 行数字和为 2^(n-1)。(2 的(n-1)次方) 4、每个数字等于上一行的左右两个数字之和。可用此性质写出整个帕 斯卡三角形。
这个公式是正确的,之前的版本错了。 5、 将第 2n+1 行第 1 个数, 跟第 2n+2 行第 3 个数、 第 2n+3 行第 5 个数…… 连成一线, 这些数的和是第 2n 个斐波那契数。 将第 2n 行第 2 个数, 跟第 2n+1 行第 4 个数、第 2n+2 行第 6 个数……这些数之和是第 2n-1 个斐波那契数。 6、 第 n 行的第 1 个数为 1, 第二个数为 1×(n-1), 第三个数为 1×(n-1)× (n-2)/2,第四个数为 1×(n-1)×(n-2)/2×(n-3)/3…依此类推。 7.两个未知数和的 n 次方运算后的各项系数依次为杨辉三角的第(n+1) 行。
相关文档
最新文档