日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JAVA实现杨辉三角的三种方式

發布時間:2023/12/31 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JAVA实现杨辉三角的三种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、前言

既然是實現楊輝三角,就要知道什么是楊輝三角。如下圖,就是兩種楊輝三角。

(1)等邊形狀的楊輝三角

?

(2)直角形狀的楊輝三角

?

在知道這兩種都是楊輝三角之后,我們就來實現利用java語言打印出楊輝三角。

二、楊輝三角的規律

  • n行有n個數字.
  • 每一行的開始和結尾數字都為1.
  • 用二維數組表示就是a[i][0]=1;? a[i][j]=1(i==j)

  • n+1行的第i個數字等于第n行的i-1個數字加上第n行的i個數字。
  • 用二維數組表示就是 a[i+1][j]=a[i][j-1]+a[i][j];

    三、代碼部分

    3.1、創建一個長度為10,寬度為10的二維數組,但賦值和輸出時只輸出楊輝三角那個范圍的數

    首先,我們得理解定義一個長度和高度都為10的二維數組時,他到底做了什么。

    public class Test {public static void main(String[] args) {int [][] arr=new int [10][10];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();}} }

    輸出圖:

    數組的圖為可以看出,實際是給每個位置上都賦值為0;

    而我們要做的是給A部分的位置賦值并且輸出,而B部分的位置不用管。

    A部分與B部分的區別在于:A部分的橫坐標大于等于縱坐標。用數組中的話就是i<=j;知道要賦值的范圍,那么for循環的語句就知道了啦,就為

    for(int i=0;i<arr.length; i++) {for(int j=0;j<=i;j++) {} }

    第一種該方法完整代碼:

    public class YHSJ {public static void main(String[] args) {//定義了一個長度為10,高度為10的二維數組,數組中的值都為0;int[][] arr=new int[10][10];for(int i=0;i<arr.length; i++) {//由于只是給楊輝三角內的位置賦值,所以是j<=ifor(int j=0;j<=i;j++) {//根據規律,使用if else 賦值if(j==0||j==i) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j-1]+arr[i-1][j];}/*由于只是輸出楊輝三角范圍內的值,所以在內層循環就輸出,這種方法不能全部賦值完之后再輸出"\t"的原因是10和小于10的數組的寬度不同,所以使用\t制表符能使數與數之間距離相等*/System.out.print(arr[i][j]+"\t");}System.out.println();}} }

    對應效果圖:

    3.2、直接創建一個和楊輝三角形狀一樣的數組再賦值輸出

    ? ? 在前面我們使用了一個長10高10的數組,但是最后我們只用了它的A部分,思考一下,為什么我們不直接創建一個和前面那個A部分形狀一樣的數組呢?

    ?? 形狀如下圖:

    ? ? 知道基本的概念之后,我們先創建該數組,首先可以確定的是這里的高度還是為10,也就是橫坐標最大還是為10,但是縱坐標就是小于等于該行的橫坐標。

    int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}

    ? ? 在數組創建好之后,再就是賦值了,之前賦值用的是j<=i,但是此處數組的范圍就是楊輝三角的范圍,所以可以直接對數組進行內外兩層循環。

    for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {} }

    ? ? 而賦值的代碼也是一樣,不過這種方法就可以賦值完再輸出,不用像第一種一樣賦值時輸出。

    第二種方法完整代碼:

    public class YHSJ_2 {public static void main(String[] args) {int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {if(j==0 || i==j) {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();}} }

    ? ? 第二種補充說明:這里用這種是輸出的一個直角三角形,但是在最后輸出的時候加上一段就可以變成等腰三角形了;(但是由于制表符的問題,還是有一些不規范,覺得不好參考第三種

    public class YHSJ_2 {public static void main(String[] args) {int[][] arr=new int[10][];for(int i=0;i<arr.length;i++) {arr[i]=new int[i+1];}for(int i=0;i<arr.length;i++) {for(int j=0;j<arr[i].length;j++) {if(j==0 || i==j) {arr[i][j]=1;}else {arr[i][j]=arr[i-1][j]+aarr[i-1][j-1];}}}for(int i=0;i<arr.length;i++) {int num=(arr.length-i)/2;for(int k=0;k<=num;k++) {System.out.print("\t");}for(int j=0;j<arr[i].length;j++) {System.out.print(arr[i][j]+"\t");}System.out.println();}} }

    3.3、接下來為大家介紹一種等邊三角形輸出的簡單方法

    參考文章鏈接:http://www.cnblogs.com/JumperMan/p/6759422.html

    代碼:

    public class YHSJ_1 {public static void main(String[] args) {int rows = 10;for (int i = 0; i < rows; i++) {int number = 1;// 打印空格字符串System.out.format("%" + (rows - i) * 2 + "s", "");for (int j = 0; j <= i; j++) {System.out.format("%4d", number);number = number * (i - j) / (j + 1);}System.out.println();}} }

    ? 重點在于那個number=number*(i-j)/(j+1),掌握了楊輝三角的作用。而關于System.out.format是一種類似于C語言中的輸出,查看API即可知。

    效果圖:

    ?

    總結

    以上是生活随笔為你收集整理的JAVA实现杨辉三角的三种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。