用java实现杨辉三角的示例代码

之前有学弟问过我一道java的面试题,题目不算难。用java实现杨辉三角。我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下。在写代码之前,我们先理清下面两个问题。

什么是杨辉三角

杨辉三角,是二项式系数在三角形中的一种几何排列。在我国南宋数学家杨辉1261年所著的《详解九章算法》有提到过。在欧洲叫做帕斯卡三角形,如图。

杨辉三角

杨辉三角的规律即原理

1.每个数等于它上方两数之和。

2.每行数字左右对称,由1开始逐渐变大。

3.第n行的数字有n项。

4.第n行数字和为2n-1。

5.第n行的m个数可表示为 C(n-1,m-1),即为从n-1个不同元素中取m-1个元素的组合数。

6.第n行的第m个数和第n-m+1个数相等 ,为组合数性质之一。

7.每个数字等于上一行的左右两个数字之和。可用此性质写出整个杨辉三角。即第n+1行的第i个数等于第n行的第i-1个数和第i个数之和,这也是组合数的性质之一。即 C(n+1,i)=C(n,i)+C(n,i-1)。

8.(a+b)n的展开式中的各项系数依次对应杨辉三角的第(n+1)行中的每一项。

9.将第2n+1行第1个数,跟第2n+2行第3个数、第2n+3行第5个数……连成一线,这些数的和是第4n+1个斐波那契数;将第2n行第2个数(n>1),跟第2n-1行第4个数、第2n-2行第6个数……这些数之和是第4n-2个斐波那契数。

10.将各行数字相排列,可得11的n-1(n为行数)次方:1=11^0; 11=11^1; 121=11^2……当n>5时会不符合这一条性质,此时应把第n行的最右面的数字"1"放在个位,然后把左面的一个数字的个位对齐到十位... ...,以此类推,把空位用“0”补齐,然后把所有的数加起来,得到的数正好是11的n-1次方。以n=11为例,第十一行的数为:1,10,45,120,210,252,210,120,45,10,1,结果为 25937424601=1110。

清楚了这两点之后,我们的思路就十分的清晰了。实现的方法有很多种,这里我打算用二维数组加双重for循环来实现。

demo代码:

public class Yanghui {
  public static void main(String[] args) {
    // 创建二维数组
    int t[][]=new int[10][];
    // 遍历二维数组的第一层
    for (int i = 0; i < t.length; i++) {
      // 初始化第二层数组的大小
      t[i]=new int[i+1];
      // 遍历第二层数组
      for(int j=0;j<=i;j++){
        // 将两侧的数组元素赋值为1
        if(i==0||j==0||j==i){
          t[i][j]=1;
        }else{
          // 其他数值通过公式计算
          t[i][j]=t[i-1][j]+t[i-1][j-1];
        }
        // 输出数组元素
        System.out.print(t[i][j]+"\t");
      }
      //换行
      System.out.println();
    }
  }
}

输出在控制台的结果如下:

这里只输出了十行的杨辉三角。优化一下,可以改成动态的获取行数。也可以变成正三角,只需在加一个循环用来计算空格。有兴趣的同学可以尝试一下。 ———来自java十八线程序猿

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • java编程实现杨辉三角两种输出结果实例代码

    首先展示下结果: 简介: 杨辉三角,是二项式系数在三角形中的一种几何排列.在欧洲,这个表叫做帕斯卡三角形.帕斯卡(1623----1662)是在1654年发现这一规律的,比杨辉要迟393年,比贾宪迟600年.杨辉三角是中国古代数学的杰出研究成果之一,它把二项式系数图形化,把组合数内在的一些代数性质直观地从图形中体现出来,是一种离散型的数与形的优美结合. 实例代码如下: package com.sxt; import java.util.Arrays; public class KeBen { p

  • 基于Java实现杨辉三角 LeetCode Pascal's Triangle

    Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 这道题比较简单, 杨辉三角, 可以用这一列的元素等于它头顶两元素的和来求. 数学扎实的人会看出, 其实每一列都是数学里的排列组合, 第4行, 可以用 C30 =

  • 使用python生成杨辉三角形的示例代码

    杨辉三角杨辉 定义如下: 1 / \ 1 1 / \ / \ 1 2 1 / \ / \ / \ 1 3 3 1 / \ / \ / \ / \ 1 4 6 4 1 / \ / \ / \ / \ / \ 1 5 10 10 5 1 把每一行看做一个list,试写一个generator,不断输出下一行的list: def triangles(): L = [1] while True: yield L M=L[:]#复制一个list,这样才不会影响到原有的list.不然results里的每个列表

  • C语言打印杨辉三角示例汇总

    杨辉三角是我们从初中就知道的,现在,让我们用C语言将它在计算机上显示出来. 在初中,我们就知道,杨辉三角的两个腰边的数都是1,其它位置的数都是上顶上两个数之和.这就是我们用C语言写杨辉三角的关键之一.在高中的时候我们又知道,杨辉三角的任意一行都是的二项式系数,n为行数减1.也就是说任何一个数等于这个是高中的组合数.n代表行数减1,不代表列数减1.如:第五行的第三个数就为=6. 现在我们按第一种思路来写:先定义一个二维数组:a[N][N],略大于要打印的行数.再令两边的数为1,即当每行的第一个数和

  • C# 中杨辉三角的实现

    C# 中杨辉三角的实现 问题描述:创建一个程序来求三角形.该程序提示用户输入数据,然后显示出杨辉三角的规律. // 输入描述:杨辉三角长,代表数值 // 程序输出:杨辉三角 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ConsoleApplication2 { class Program { static void Main(string[] arg

  • python实现杨辉三角思路

    程序输出需要实现如下效果: [1] [1,1] [1,2,1] [1,3,3,1] ...... 方法:迭代,生成器 def triangles() L = [1] while True: yiled L L =[1] + [L[i] + L[I+1] for i in range(len(L)-1)] + [1] n = 0 for t in triangles(): print(t) n += 1 if n == 10: break 实现逻辑: 1.由于yield为生成器中断输出,所以有了第

  • C语言在屏幕上输出杨辉三角

    这就是杨辉三角,也叫贾宪三角.这于我们现在的学习联系最紧密的是2项式乘方展开式的系数规律.如图,在贾宪三角中,第3行的第三个数恰好对应着两数和的平方公式依次下去. 杨辉三角是一个由数字排列成的三角形数表,一般形式如下: ................................................. 杨辉三角的规律是:它的两条斜边都是由数字1组成的,而其余的数则是等于它肩上的两个数之和. 代码如下: #include<stdio.h> #include<stdlib.h

  • java使用for循环输出杨辉三角

    思路是创建一个整型二维数组,包含10个一维数组.使用双层循环,在外层循环中初始化每一个第二层数组的大小.在内层循环中,先将两侧的数组元素赋值为1,其他数值通过公式计算,然后输出数组元素. 复制代码 代码如下: public class YanghuiTriangle {    public static void main(String[] args) {        int triangle[][]=new int[10][];// 创建二维数组        // 遍历二维数组的第一层  

  • Java算法实现杨辉三角的讲解

    又写了个算法题,著名的杨辉三角,哈哈,直接进入主题吧! 先给大家简单介绍一下吧: 杨辉三角的每个数等于它上方两数之和. 在百度上找了张图给大家理解 大家可以自己分析一下,我直接上代码,在代码里面讲解 public class trangle { public static void main(String[] args) { int x=8; //我们先定义8行的数组,这里可以随意设置哦 int[][] arg=new int[x][x];//定义一个二维数组 for(int i=0;i<x;i

  • 用java实现杨辉三角的示例代码

    之前有学弟问过我一道java的面试题,题目不算难.用java实现杨辉三角.我花了点时间整理了一下,发现挺有意思的,于是想写下来分享一下.在写代码之前,我们先理清下面两个问题. 什么是杨辉三角 杨辉三角,是二项式系数在三角形中的一种几何排列.在我国南宋数学家杨辉1261年所著的<详解九章算法>有提到过.在欧洲叫做帕斯卡三角形,如图. 杨辉三角 杨辉三角的规律即原理 1.每个数等于它上方两数之和. 2.每行数字左右对称,由1开始逐渐变大. 3.第n行的数字有n项. 4.第n行数字和为2n-1. 5

  • 用JAVA实现杨辉三角实例

    这是我的第一篇文章,我的想法是把自己再学习的路上遇到的困难都给记录下来,一来是方便以后的自我复习,二来就是大家资源共享,帮助和我一样遇到困难的小伙伴们. 这是我遇到的第一个难题. 题目是: 杨辉三角形又称Pascal三角形,它的第i+1行是(a+b)i的展开式的系数.它的一个重要性质是:三角形中的每个数字等于它两肩上的数字相加. 输入包含一个数n.(1 <= n <= 34) 输出格式:n=5:数和数之间有空格 ​​​​​​​        ​​​​​​​ 首先我们应该想着如何打印一个边长=n

  • 基于Java实现杨辉三角 LeetCode Pascal's Triangle

    Pascal's Triangle Given numRows, generate the first numRows of Pascal's triangle. For example, given numRows = 5, Return [ [1], [1,1], [1,2,1], [1,3,3,1], [1,4,6,4,1] ] 这道题比较简单, 杨辉三角, 可以用这一列的元素等于它头顶两元素的和来求. 数学扎实的人会看出, 其实每一列都是数学里的排列组合, 第4行, 可以用 C30 =

  • 批处理杨辉三角效果实现代码

    效果图: 复制代码 代码如下: @echo off&color 0esetlocal enabledelayedexpansionmode con: cols=130 lines=130:topcls::set /p in=请输入行数:set in=23&set ab=1&set var=64if "%in%"=="" goto topif %in% geq 35 goto topif %in% leq 0 goto topecho %in%

  • PHP写杨辉三角实例代码

    复制代码 代码如下: <?php //杨辉三角 for ($i=6;$i >= 0;$i--) { for ($j=$i;$j <= 6;$j++) { if ($j <= 6-1) { echo "<b>a</b>"; }else { echo "<br />"; } } } ?> PHP打印杨辉三角自定义 复制代码 代码如下: <form method="post" ac

  • java int类型二维数组实现“杨辉三角”的完整实例

    杨辉三角的规律: 1.每行的数据个数和在第几行一样. 2.每行第一个数和最后一个数都是1. 3.每行除了第一个数据和最后一个数据 其他数据的值等于上面一行的对应列的值和左对角值的和.例如:a[2][1]=a[1][0]+a[1][1] 根据上面的规律我们设计程序 private static void demo(){ int[][] ints = new int[10][]; //动态给ints数组的一维赋值一个不同的数组 for (int i = 0; i < ints.length; i++

  • Python极简代码实现杨辉三角示例代码

    杨辉三角,又称贾宪三角形,帕斯卡三角形,是二项式系数在三角形中的一种几何排列. 把每一行看做一个list,写一个generator,不断输出下一行的list 实现下列输出效果: # [1] # [1, 1] # [1, 2, 1] # [1, 3, 3, 1] # [1, 4, 6, 4, 1] # [1, 5, 10, 10, 5, 1] # [1, 6, 15, 20, 15, 6, 1] # [1, 7, 21, 35, 35, 21, 7, 1] # [1, 8, 28, 56, 70,

  • C语言小程序 杨辉三角示例代码

    复制代码 代码如下: #include <stdio.h>#include <stdlib.h>int main(){ int i,j,k; int line; int *prev, *next; printf("输入要查看杨辉三角的行数(大于2):"); scanf("%d",&line); if(line < 2) {  printf("行数小于2,Goodbye!\n");  exit(1); } fo

随机推荐