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遞迴演算法
- Java方法06:遞迴Java遞迴
- 輸出區間內的偶數和(遞迴)遞迴
- 碎片化學習Java(二十)Java for迴圈巢狀輸出指定圖案Java巢狀
- 用遞迴的方法將單連結串列逆向輸出遞迴
- Java - 13 方法的遞迴Java遞迴
- 輸入一個數倒序輸出(遞迴)遞迴
- 揹包問題的遞迴與非遞迴演算法遞迴演算法
- Java資料結構與演算法--遞迴和回溯Java資料結構演算法遞迴
- 使用Java NIO 和 NIO2實現檔案輸入/輸出Java
- Oracle with使用方法以及遞迴Oracle遞迴
- 遞迴和尾遞迴遞迴
- Java for迴圈倒序輸出Java
- java-遞迴(檔案查詢)Java遞迴
- java常見遞迴練習題Java遞迴
- 二十一、氣泡排序演算法——JAVA實現(遞迴與非遞迴)排序演算法Java遞迴
- 實驗三:分別用for、while和do-while迴圈語句以及遞迴方法計算n!,並輸出算式While遞迴
- 遞迴演算法遞迴演算法
- 0基礎演算法基礎學演算法 第六彈 遞迴演算法遞迴
- 資料結構和演算法——遞迴-八皇后問題(回溯演算法)資料結構演算法遞迴
- 漢諾塔的圖解遞迴演算法圖解遞迴演算法
- 二十、快速排序演算法——JAVA實現(遞迴)排序演算法Java遞迴
- leetcode題解(遞迴和回溯法)LeetCode遞迴
- 資料結構和演算法:遞迴資料結構演算法遞迴
- leetcode:遞迴:括號生成LeetCode遞迴
- 【進階篇】Java 專案中對使用遞迴的理解分享Java遞迴
- 演算法小專欄:遞迴與尾遞迴演算法遞迴
- 資料結構和演算法面試題系列—遞迴演算法總結資料結構演算法面試題遞迴
- 【演算法】遞迴演算法演算法遞迴
- 遞迴演算法要素遞迴演算法
- 遞迴問題遞迴
- 用遞迴的方法列印出輸入的任意整數遞迴
- 解讀:什麼是Java的遞迴演算法?Java遞迴演算法
- No.8 遞迴快速輸出斐波那契數列遞迴
- 快速排序(遞迴及非遞迴演算法原始碼)排序遞迴演算法原始碼
- 初識遞迴方法遞迴
- 演算法初探--遞迴演算法演算法遞迴