1. 程式人生 > >Java基礎-遞迴相關知識點和用法

Java基礎-遞迴相關知識點和用法

遞迴

在方法中,呼叫方法本身的現象叫遞迴

注意事項

1、遞迴一定要有出口,否則就是死遞迴

2、遞迴對次數不能太多,否則容易記憶體溢位

3、構造方法不能遞迴使用

分析:

5! = 1 * 2 * 3 * 4 * 5

5! = 5 * 4!

4! = 4 * 3!

3! = 3 * 2!

2! = 2 * 1!

1! = 1

在這裡插入圖片描述

使用遞迴思想求5的階乘

在這裡插入圖片描述

執行流程圖

在這裡插入圖片描述

兔子問題(斐波那契數列)

有一對兔子,從出生後的第三個月起,每個月都生一對小兔子,小兔子長到三個月後,每個月又生一對兔子,假如兔子不死,第二十個月兔子的對數是多少?

分析:

第一個月 : 1對

第二個月 : 1對

第三個月 : 2對

第四個月 : 3對

第五個月 : 5對

第六個月 : 8對

1,1,2,3,5,8,。。。。。。

規律:

1、從第三個月開始,每個月對對數,是前兩個月個數對和。

2、第一個月,和第二個月對對數是已知對,都是一對。

陣列實現:

在這裡插入圖片描述

變數的變化實現

假如相鄰兩個月的兔子數量是a,b

第一個相鄰的資料 a = 1,b = 1;

第二個相鄰的資料 a = 1,b = 2;

第三個相鄰的資料 a = 2,b = 3;

第四個相鄰的資料 a = 3,b = 5;

第五個相鄰的資料 a = 5,b = 8;

下一次的a是以前的b,下一次的b是以前的a+b;

在這裡插入圖片描述

遞迴實現

返回值型別 int

引數列表 int n

出口條件:第一個月是1,第二個月是1

規律:第三個開始是前兩個月的和

在這裡插入圖片描述

遞迴實現輸出指定目錄下java結尾的檔案的絕對路徑

需求:在控制檯輸出某目錄下java結尾的檔案的絕對路徑

思路:

1、封裝目錄

2、獲取該目錄下所有的檔案或資料夾的File類的物件陣列

3、遍歷陣列,判斷是檔案還是資料夾

4、如果是資料夾,回到第二步;如果是檔案,判斷是否是.java結尾,並輸出絕對路徑

在這裡插入圖片描述

遞迴刪除帶內容的目錄

在這裡插入圖片描述
在這裡插入圖片描述