【威哥說】沒有接觸過程序的同窗,感受代碼距離咱們很好遙遠,但是你真正的學會了編程以後,你才知道,其實程序但是實現全部的事物。本篇文章就是波波老師針對一個學生的提問,單純的使用循環和判斷實現的楊輝三角。你們一塊兒學習一下吧。編程
有學生問到楊輝三角該如何用代碼實現,說來也有意思,他把規律都總結完了,就是寫不出來代碼,我一問是爲何,小夥說不能用數組,就單純的用循環和判斷來實現,想一想以爲還挺有意思,就整理了整理。 網上找了找代碼,有趣的是都是用的二維數組來實現的,因此就沒有具體去研究了,看看如何本身來實現。首先咱們看一下效果圖: 如上圖所示,這裏咱們從控制檯輸入要顯示的行數,而後來具體的進行顯示。 首先,總結規律以下: 第n行的第一個數爲1,第二個數爲1x(n-1),第三個數爲1x(n-1)x(n-2)/2,第四個數爲1x(n-1)x(n-2)/2x(n-3)/3…依次類推。 那麼找到規律了,就很好解決了,具體如何用代碼來實現? 首先看到這麼一個圖形,首先第一反應嵌套循環是跑不掉的,若是沒有第一時間對嵌套 循環產生想法,那麼證實你三角形仍是畫少了。。。; 首先咱們經過Scanner獲取一個鍵盤輸入的數:
Scanner input = new Scanner(System.in);數組
int n = input.nextInt();佈局
那麼首先外層循環控制行數:
for( int i = 1 ; i <=n ; i++ ){ //由上面的佈局來看,前面是要輸出一個倒三角的空格形狀的,那麼此處咱們用空格給代替 //因爲倒三角是上面多下面少,呈遞減趨勢,因此咱們初始位置爲n,判斷條件爲j>=i,趨勢爲遞減,就能獲得一個遞減的趨勢了。 for (int j = n; j >=i; j--) { //這裏輸出空格 System.out.print(" "); }學習
//由上面的總結咱們看一下 第一個數: a1 = 1 第二個數: a2 = a1x(n-1)
第三個數: a3 = a2x(n-2)/2 第四個數: a4 = a3x(n-3)/3 … …編碼
總結出來規律就是每行後一個數是前一個數乘以(n-(第幾個數-1))/(第幾個數-1);
因此每輪須要一個數來記錄前一個數的值,這裏咱們定義一個sum,初始值等於1 int sum = 1;code
//首先須要一個內層循環控制每行的個數,並且咱們發現每行的個數是遞增的因此,初始爲1,小於等於i,就能達成遞增的趨勢
for (int j = 1; j <= i; j++) { //上圖能夠看出很明顯每行第一個都是1,那麼咱們就判斷若是爲1直接輸出 if (j == 1) { System.out.print(1+" "); }else{ //後邊就是直接經過基礎的編碼來實現我們發現的邏輯了 sum*=(i-(j-1)); sum/=(j-1); System.out.print(sum+" "); } } System.out.println();input
}基礎
如上就是整個的楊輝三角的實現邏輯了,我的以爲其實比網上二維數組的要好理解一些,你們闊以研究研究。