Java必做演算法題-使用遞迴方法輸出如下圖案0和*號
題目
使用遞迴方法輸出如下圖案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);
}
}
}
總結
首先我們要理解遞迴的思想,執行步驟和流程,才可以去實現功能相關文章
- /*編寫一個程式,輸出如下圖案: * *** ***** ******* ***** *** * */
- java將字串逆序遞迴方式輸出Java字串遞迴
- Java遞迴演算法的使用Java遞迴演算法
- 輸出1-100,不使用迴圈 goto 遞迴Go遞迴
- JavaScript迴圈輸出星星圖案JavaScript
- Java遞迴演算法Java遞迴演算法
- Java方法06:遞迴Java遞迴
- 原:八皇后問題的遞迴和非遞迴Java實現遞迴Java
- 碎片化學習Java(二十)Java for迴圈巢狀輸出指定圖案Java巢狀
- Java遍歷資料夾的兩種方法(非遞迴和遞迴)Java遞迴
- Java - 13 方法的遞迴Java遞迴
- Java演算法面試題(001) 如何使用迴圈和遞迴計算單連結串列的長度Java演算法面試題遞迴
- 30、java中遞迴演算法Java遞迴演算法
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- 簡單的java遞迴演算法Java遞迴演算法
- 遞迴和尾遞迴遞迴
- Oracle with使用方法以及遞迴Oracle遞迴
- 使用Java NIO 和 NIO2實現檔案輸入/輸出Java
- Java for迴圈倒序輸出Java
- 遞迴演算法程式設計整數因子分解問題的遞迴演算法遞迴演算法程式設計
- 遞迴 Java遞迴Java
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- java常見遞迴練習題Java遞迴
- java-遞迴(檔案查詢)Java遞迴
- 第9周專案3輸出星號圖(3)
- 遞迴演算法遞迴演算法
- 遞迴逆向輸出字串遞迴字串
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- 實驗三:分別用for、while和do-while迴圈語句以及遞迴方法計算n!,並輸出算式While遞迴
- Josephus問題解決方法五(遞迴)遞迴
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- 資料結構和演算法面試題系列—遞迴演算法總結資料結構演算法面試題遞迴
- 【演算法】2 由股票收益問題再看分治演算法和遞迴式演算法遞迴
- 資料結構和演算法:遞迴資料結構演算法遞迴
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 0基礎演算法基礎學演算法 第六彈 遞迴演算法遞迴