【javase基础】第六篇:方法的重载与递归
👀作者簡介:大家好,我是大杉。
🚩🚩 個人主頁:愛編程的大杉
支持我:點贊+關注~不迷路🧡🧡🧡
?系列專欄:javase基礎???
(?′?`?)勵志格言:在我有生之日,做一個真誠的人,不放棄對生活的熱愛和執著,在有限的時空里,過無限廣大的日子。(by 三毛)
🤞🤞
文章目錄
- 一?重載的基本用法?
- 一、為什么要設計重載?
- 二、如何判斷是不是重載?
- 1.重載的特征:
- 2.常見案例:
- 三.遞歸的條件與本質
- 四.典型例題
- 1.斐波那契額數列(多路遞歸)
- 2.求n的階乘(單路遞歸)
- 3.遞歸的不足(壓棧現象)
一?重載的基本用法?
看下面這段代碼?
public class test {public static void main(String[] args) {double a = 3.14;double b = 4.12;int c=2;int d=3;System.out.println(sum(a, b));System.out.println(sum(c, d));}public static int sum(int a, int b) {return a + b;}public static double sum(double a, double b) {return a+b;} }
定義多個方法使它們的方法名相同,參數列表不同,傳參數時實參根據自身類型,選擇相應的方法進行運算的方式叫做方法重載
一、為什么要設計重載?
主要目的:節約字母,減少操作復雜性。
舉個例子👀:我們java通常使用的打印方法System.out.println(),其實也是這個原理,在打印時,我們不能為每一個不同的數據類型都定義一種打印方法,只能放在一個方法了,根據數據類型自行選擇打印方式
二、如何判斷是不是重載?
1.重載的特征:
1📣.方法名相同。
2.返回值不做要求
3.參數列表不同(參數個數或參數類型不同)
4.必須在同一個類當中
2.常見案例:
1.不能完全一樣
2.正確案例
3.正確案例:
三.遞歸的條件與本質
🏴???條件:要有限制條件和遞歸公式
🌞本質:遞歸分為”遞“和”歸”兩個過程,通過給定的條件進行“遞”過程,再通過return進行“歸”過程,最終通過限制條件結束遞歸
如果沒有限制條件會怎么樣?
方法調用時是在棧內存中開辟一塊內存空間,如果沒有限制條件。會使方法無限次調用,造成棧溢出。因為棧內存使有一定限度的。
四.典型例題
1.斐波那契額數列(多路遞歸)
public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();System.out.println(feibona(n));}public static int feibona(int n){if(n==1){return 1;}else if(n==2){return 1;}else{return feibona(n-1)+feibona(n-2);}}2.求n的階乘(單路遞歸)
public static void main(String[] args) {Scanner sc=new Scanner(System.in);int n=sc.nextInt();fac(n);}public static int fac (int n){if(n==1){return 1;}else{return n*fac(n-1);}}以4的階乘為例
3.遞歸的不足(壓棧現象)
一般我們運行斐波那契數列用迭代(循環)而不是遞歸,因為當進行一些比較大的數的遞歸時,它運行的效率比較低。那么為什么呢,這就不得不提到“穿脫原則”和“壓棧現象”
壓棧現象:如上圖所示,在遞歸的數十分大時,會不斷在上面開辟空間,不斷占用棧內存,拖慢效率造成“壓棧”現象。
穿脫原則:類似于穿衣服一樣,先被調用的放法,后被釋放出來
總結
以上是生活随笔為你收集整理的【javase基础】第六篇:方法的重载与递归的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux分区表导出与恢复,linux下
- 下一篇: L3HSEC 2022秋季招新赛部分WP