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