一区二区三区日韩精品-日韩经典一区二区三区-五月激情综合丁香婷婷-欧美精品中文字幕专区

分享

【Java案例】打印楊輝三角

 Java幫幫 2020-01-02

【Java】打印楊輝三角

根據(jù)輸入行數(shù),打印出楊輝三角形,如圖1.10所示。


圖1.10  楊輝三角形

案例分析

觀察楊輝三角形的圖案,可以發(fā)現(xiàn)其中的規(guī)律:三角形的豎邊和斜邊都是“1”,三角形里面的任意一個數(shù)字正好等于它正上方的數(shù)字和左上角的數(shù)字兩個數(shù)字之和。第幾行就有幾個數(shù)字,可以把它補充成如圖1.11所示效果。


圖1.11  方陣

方陣(行列相等的矩陣)大家都很熟悉了,可以通過二維數(shù)組來處理方陣,一個雙重循環(huán)就能實現(xiàn),外循環(huán)控制行數(shù),內(nèi)循環(huán)控制列來完成方陣內(nèi)數(shù)字的計算和存儲。

案例實現(xiàn)

1

確定程序框架

由前面的問題分析可知,先從鍵盤接收楊輝三角的高度,然后通過二維數(shù)組計算存儲楊輝三角,最后把楊輝三角打印出來。程序框架代碼如下:

public class Ch1_5

{

public static void main(String[] args)

{

    System.out.print("請輸入行數(shù):");

    Scanner scanner = new Scanner(System.in);

     int num = scanner.nextInt();  //鍵盤接收行數(shù)

    int[][] ary = getTriangle(num); //得到楊輝三角

    print(ary);       //打印楊輝三角

}

}

2

得到楊輝三角

由前面的問題分析可知,用二維數(shù)組計算存儲楊輝三角,楊輝三角豎邊、斜邊都為1,可以先賦值,然后再給中間元素賦值,當(dāng)前位置的值等于它的上方數(shù)和左上角上的數(shù)之和。程序代碼如下:

private static int[][] getTriangle(int num)

{

int[][] ary = new int[num][num];  //用二維數(shù)組存儲

for(int i = 0; i < ary.length; i++) //豎邊、斜邊置1

{

ary[i][0] = 1;

ary[i][i] = 1;

}

for(int i = 1; i < ary.length; i++) //外循環(huán)控制行數(shù)

{

for(int j = 1; j <= i; j++)   //內(nèi)循環(huán)控制列

{

//里面部分,等于當(dāng)前位置的上方和左上角之和

ary[i][j] = ary[i-1][j-1] + ary[i-1][j];

}

}

return ary;

}

3

打印楊輝三角

楊輝三角保存在二維數(shù)組中,通過一個雙重循環(huán)就可以打印出來,但是要注意的是,不需要把所有元素都打印出來,內(nèi)循環(huán)列的控制要小于等于當(dāng)前行數(shù)。程序代碼如下:

private static void print(int[][] ary)

{

for(int i=0;i<ary.length;i++)   //外循環(huán)控制行

{

for(int j=0;j<=i;j++)    //內(nèi)循環(huán)控制列

{

System.out.printf(" %-3d", ary[i][j]);

}

System.out.println();    //換行

}

}

4

完整程序

現(xiàn)在我們就需要把剛才的程序進行組合,構(gòu)成我們的完整程序:

import java.util.Scanner;

public class Ch1_5

{

public static void main(String[] args)

{

    System.out.print("請輸入行數(shù):");

    Scanner scanner = new Scanner(System.in);

     int num = scanner.nextInt();    //從鍵盤接收行數(shù)

    int[][] ary = getTriangle(num);   //得到楊輝三角

    print(ary);         //打印楊輝三角

}

//得到楊輝三角

private static int[][] getTriangle(int num)

{

int[][] ary = new int[num][num];   //用二維數(shù)組存儲

for(int i = 0; i < ary.length; i++)  //豎邊、斜邊置1

{

ary[i][0] = 1;

ary[i][i] = 1;

}

for(int i = 1; i < ary.length; i++)  //外循環(huán)控制行

{

for(int j = 1; j <= i; j++)    //內(nèi)循環(huán)控制列

{

//里面部分,等于當(dāng)前位置的上方和左上角之和

ary[i][j] = ary[i-1][j-1] + ary[i-1][j];

}

}

return ary;

}

private static void print(int[][] ary)

{

for(int i=0;i<ary.length;i++)    //外循環(huán)控制行

{

for(int j=0;j<=i;j++)     //內(nèi)循環(huán)控制列

{

System.out.printf(" %-3d", ary[i][j]);

}

System.out.println();     //輸出換行

}

}

}

5

運行程序

運行程序,結(jié)果如圖1.12所示。


圖1.12  程序輸出結(jié)果

長按指紋,識別二維碼,一鍵關(guān)注

擴展訓(xùn)練

圖1.12輸出的楊輝三角是直角三角形,能不能輸出等腰三角形呢?答案是肯定的。等腰三角形類似于前面的金字塔圖案,參考前面介紹的思路,不難輸出等腰三角形。

(1)參考代碼

import java.util.*;

public class Ch1_5_2

{

   public static void main(String[] args)

   {

   Scanner in = new Scanner(System.in);   //獲取控制臺輸入對象

   System.out.print("請輸入行號: ");

   int m = in.nextInt();      //從鍵盤接收輸入

   int n=2*m-1;         //列元素個數(shù)

   int arr[][]=new int[m][n];

   for(int i=0;i<m;i++)      //外循環(huán)控制行

   {

   for(int j=0;j<n;j++)     //內(nèi)循環(huán)控制列

   {

   if(j<(m-i-1)||(j>=(m+i)))  //輸出等腰三角形兩邊空格

   System.out.print("   ");

   else if((j==(m-i-1))||(j==(m+i-1)))
           //計算并輸出等腰三角形兩個腰

   {

   arr[i][j]=1;

   System.out.printf("%-3d",arr[i][j]);

   }

   else if((i+j)%2==0&&m%2==0||(i+j)%2==1&&m%2==1)
           

   System.out.print("   ");

   else        //計算并輸出中間數(shù)字

   {

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

   System.out.printf("%-3d",arr[i][j]);

   }

   }

           System.out.println();     //輸出換行

   }

   }

}

(2)運行結(jié)果

運行程序,結(jié)果如圖1.13所示。

 

圖1.13  程序輸出結(jié)果

    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多

    日本一本在线免费福利| 日本福利写真在线观看| 亚洲黄色在线观看免费高清| 国产二级一级内射视频播放| 真实国产乱子伦对白视频不卡 | 91人妻人人做人碰人人九色| 午夜精品一区二区av| 青青草草免费在线视频| 亚洲精品黄色片中文字幕| 日本熟妇五十一区二区三区| 国产老女人性生活视频| 日本高清视频在线播放| 中日韩免费一区二区三区| 日韩精品一区二区三区含羞含羞草 | 欧美午夜国产在线观看| 国产a天堂一区二区专区| 在线播放欧美精品一区| 亚洲在线观看福利视频| 亚洲天堂一区在线播放| 婷婷激情五月天丁香社区| 亚洲国产成人一区二区在线观看| 国产美女精品午夜福利视频| 欧美日韩在线观看自拍| 日韩精品人妻少妇一区二区| 精品熟女少妇一区二区三区| 搡老妇女老熟女一区二区| 少妇人妻精品一区二区三区| 精品人妻精品一区二区三区| 久久婷婷综合色拍亚洲| 欧美黑人黄色一区二区| 国产又粗又爽又猛又黄的| 精品人妻一区二区三区在线看| 亚洲综合天堂一二三区| 欧美av人人妻av人人爽蜜桃| 爱草草在线观看免费视频| 欧洲日韩精品一区二区三区| 国产精品一区二区香蕉视频| 亚洲夫妻性生活免费视频| 亚洲熟女国产熟女二区三区| 伊人色综合久久伊人婷婷| 二区久久久国产av色|