Java必做演算法題-使用遞迴方法輸出如下圖案0和*號

小兵_罐裝冰塊發表於2020-12-19


題目

使用遞迴方法輸出如下圖案0和*


0***************
00**************
000*************
0000************
00000***********
000000**********
0000000*********
00000000********
000000000*******
0000000000******
00000000000*****
000000000000****
0000000000000***
00000000000000**
000000000000000*
0000000000000000

一、看題目,找規律

依題意得,我們發現一共有16行16列,

第一行一個0,15個星號;第二行兩個0,14個星號;第三行三個0,13個星號以此類推到16行

二、使用遞迴

1.建立方法-方法名recursion

首先recursion方法,形參為要輸出的行數a。
使用遞迴一定要先判斷,不然的話會報錯,遞迴太深。遞迴 也跟迴圈一樣,要有判斷條件,是否繼續執行
我們最開始a會等於16,每次遞迴後減一,即:判斷是否執行到了最後一行a=1時,就輸出最後一行16個0

程式碼如下(示例):

//定義一個輸出16行的方法,形參是總行數
    public static void recursion(int a){
        //當a=1,最後一行輸出全0
        if (a==1){
        	//一行有16個,最後一行全是0,所以迴圈輸出16個0
            for (int i=1;i<=16;i++){
                System.out.print("0");
            }
        }else{
            2.遞迴的內容
        }
    }

2.寫遞迴內容

前面已經定義了遞迴結束條件a=1結束。
現在我們要完成遞迴的部分,第一次執行,呼叫遞迴方法 a=16,if判斷a不等於1;
執行else部分
首先輸出0的部分,a代表行數,第幾行就代表有幾個0,
然後輸出星號部分,a是幾就輸出a-1個星號
最後把a先自減1,然後呼叫遞迴方法 ,繼續執行直到a=1位置

程式碼如下(示例):

			//判斷輸出0的個數
            for (int i=0;i<=16-a;i++){
                System.out.print("0");
            }
            //判斷輸出*的個數
            for (int i=1;i<a;i++){
                System.out.print("*");
            }
            System.out.println();
            //遞迴,行數減一
            recursion(--a);

2.完整程式碼和輸出結果

public class Task1217_2 {
    public static void main(String[] args) {
        recursion(16);
    }
    //定義一個輸出16行的方法,形參是總行數
    public static void recursion(int a){
        //當a=1,最後一行輸出全0
        if (a==1){
            for (int i=1;i<=16;i++){
                System.out.print("0");
            }
        }else{
            //判斷輸出0的個數
            for (int i=0;i<=16-a;i++){
                System.out.print("0");
            }
            //判斷輸出*的個數
            for (int i=1;i<a;i++){
                System.out.print("*");
            }
            System.out.println();
            //遞迴,行數減一
            recursion(--a);
        }
    }
}

在這裡插入圖片描述


總結

首先我們要理解遞迴的思想,執行步驟和流程,才可以去實現功能

相關文章