Java必做演算法題-使用遞迴方法輸出如下圖案0和*號
阿新 • • 發佈:2020-12-21
文章目錄
題目
使用遞迴方法輸出如下圖案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);
}
}
}