国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【Java探索之旅】方法重載 遞歸

這篇具有很好參考價值的文章主要介紹了【Java探索之旅】方法重載 遞歸。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言
?? 嶼小夏 : 個人主頁
??個人專欄 : Java編程秘籍
?? 莫道桑榆晚,為霞尚滿天!

??前言

方法重載和遞歸是編程中常見且重要的概念,它們?yōu)槲覀兘鉀Q問題提供了靈活且高效的方式。方法重載讓我們可以根據(jù)不同的參數(shù)類型來定義同名方法,使代碼更具可讀性和靈活性;而遞歸則是一種強大的解決復雜問題的方法,通過將問題分解為子問題并逐步解決,展現(xiàn)出了獨特的魅力和實用性。讓我們一起深入探討這兩個主題,探索它們的內(nèi)涵和應(yīng)用。

一、方法重載

1.1 為什么要有方法重載

假設(shè)現(xiàn)在我們需要求兩個數(shù)的和,要求根據(jù)數(shù)據(jù)的類型返回相應(yīng)的返回值。那么就需要寫一個整數(shù)和的方法、一個浮點數(shù)和的方法。如果類似的要求很多,你取名字都是一件極其麻煩的事情,這里就需要用到方法的重載了。

1.2 方法重載的概念與使用

在自然語言中,經(jīng)常會出現(xiàn)“一詞多義”的現(xiàn)象,比如:“好人”。

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

在編程語言中,一個詞語如果有多重含義,那么就說該詞語被重載了,具體代表什么含義需要結(jié)合具體的場景。

在Java中方法也是可以重載的。如果多個方法的名字相同,參數(shù)列表不同,則稱該幾種方法被重載了。

public static void print(int a,int b) {
    System.out.println(a+b);
}
public static void print(float a,float b) {
    System.out.println(a+b);
}
public static void print(float a,float b,float c) {
    System.out.println(a+b+c);
}
public static void main(String[] args) {
    int a = 10;
    int b = 20;
    print(a,b);
    float c = 3.14f;
    float d = 5.5f;
    float e = 8.8f;
    print(c,d);
    print(c,d,e);
}

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

注意事項

  1. 方法名必須相同
  2. 參數(shù)列表必須不同(參數(shù)的個數(shù)不同、參數(shù)的類型不同、類型的次序必須不同)
  3. 與返回值類型是否相同無關(guān)
  4. 編譯器在編譯代碼時,會對實參類型進行推演,根據(jù)推演的結(jié)果來確定調(diào)用哪個方法

1.3 方法簽名

在同一個作用域中不能定義兩個相同名稱的標識符。比如:方法中不能定義兩個名字一樣的變量,那為什么類中就可以定義方法名相同的方法呢?

方法簽名即:經(jīng)過編譯器編譯修改過之后方法最終的名字。具體方式:方法全路徑名+參數(shù)列表+返回值類型,構(gòu)成方法完整的名字。

public class TestMethod {
    public static int add(int x, int y){
        return x + y;
    }
    public static double add(double x, double y){
        return x + y;
    }
    public static void main(String[] args) {
        add(1,2);
        add(1.5, 2.5);
    }
}

上述代碼經(jīng)過編譯之后,然后使用JDK自帶的javap反匯編工具查看

具體操作

  1. 先對工程進行編譯生成.class字節(jié)碼文件
  2. 在控制臺中進入到要查看的.class所在的目錄
  3. 輸入:javap -v 字節(jié)碼文件名字即可

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

方法簽名中的一些特殊符號說明

特殊字符 數(shù)據(jù)類型
V void
Z boolean
B byte
C char
S short
I int
J long
F float
D double
[ 數(shù)組(以[開頭,配合其他的特殊字符,表述對應(yīng)數(shù)據(jù)類型的數(shù)組,幾個[表述幾維數(shù)組)
L 引用類型,以L開頭,以;結(jié)尾,中間是引用類型的全類名

二、遞歸

2.1 開篇小故事

從前有坐山,山上有座廟,廟里有個老和尚給小和尚將故事,講的就是:"從前有座山,山上有座廟,廟里有個老和尚給小和尚講故事,講的就是:“從前有座山,山上有座廟…”“從前有座山……”

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

上面的這個故事有個特征:

? 自身中又包含了自己,該種思想在數(shù)學和編程中非常有用,因為有些時候,我們遇到的問題直接并不好解決,但是發(fā)現(xiàn)將原問題拆分成其子問題之后,子問題與原問題有相同的解法,等子問題解決之后,原問題就迎刃而解了。

2.2 遞歸的概念

一個方法在執(zhí)行過程中調(diào)用自身, 就稱為 “遞歸”.遞歸相當于數(shù)學上的 “數(shù)學歸納法”, 有一個起始條件, 然后有一個遞推公式.

例如, 我們求 N!

  • 起始條件: N = 1 的時候, N! 為 1. 這個起始條件相當于遞歸的結(jié)束條件
  • 遞歸公式: 求 N! , 直接不好求, 可以把問題轉(zhuǎn)換成 N! => N * (N-1)!

2.3 遞歸的必要條件

  1. 將原問題劃分成其子問題,注意:子問題必須要與原問題的解法相同
  2. 遞歸出口

2.4 代碼示例

遞歸求 N 的階乘

public static int facTow(int n) {
    if(n == 1) {
        return 1;
    }
    return n * facTow(n-1);
}
public static void main(String[] args) {
    int a= 5;
    int ret = facTow(a);
    System.out.println(ret);
}

上述代碼就運用到了遞歸,本質(zhì)上就是自己調(diào)用自己,這里必須要有停止的條件,不然就會陷入死遞歸。

2.5 遞歸的執(zhí)行流程剖析

遞歸的程序的執(zhí)行過程不太容易理解, 要想理解清楚遞歸, 必須先理解清楚 “方法的執(zhí)行過程”, 尤其是 “方法執(zhí)行結(jié)束之后, 回到調(diào)用位置繼續(xù)往下執(zhí)行”

public static int facThree(int n) {
    System.out.println("方法開始="+n);
    if(n == 1) {
        System.out.println("方法結(jié)束:n = 1,ret = 1");
        return 1;
    }
    int ret = n * facThree(n-1);
    System.out.println("方法結(jié)束"+" n = "+n+" ret = "+ret);
    return ret;
}
public static void main(String[] args) {
    int a= 5;
    int ret = facThree(a);
    System.out.println(ret);
}

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言

關(guān)于 “調(diào)用?!?/strong>

  1. 方法調(diào)用的時候, 會有一個 “?!?這樣的內(nèi)存空間描述當前的調(diào)用關(guān)系. 稱為調(diào)用棧.
  2. 每一次的方法調(diào)用就稱為一個 “棧幀”, 每個棧幀中包含了這次調(diào)用的參數(shù)是哪些, 返回到哪里繼續(xù)執(zhí)行等信息.

擴展:

遞歸中有一些十分經(jīng)典的問題:斐波那契數(shù)列、青蛙跳臺階、漢諾塔…感興趣的小伙伴可以自行了解哦,后期也是會出一些這種的解題思路和方法,敬請期待!

時候, 會有一個 “棧” 這樣的內(nèi)存空間描述當前的調(diào)用關(guān)系. 稱為調(diào)用棧.
2. 每一次的方法調(diào)用就稱為一個 “棧幀”, 每個棧幀中包含了這次調(diào)用的參數(shù)是哪些, 返回到哪里繼續(xù)執(zhí)行等信息.

擴展:

遞歸中有一些十分經(jīng)典的問題:斐波那契數(shù)列、青蛙跳臺階、漢諾塔…感興趣的小伙伴可以自行了解哦,后期也是會出一些這種的解題思路和方法,敬請期待!

【Java探索之旅】方法重載 遞歸,Java之光,java,python,開發(fā)語言文章來源地址http://www.zghlxwxcb.cn/news/detail-852502.html

到了這里,關(guān)于【Java探索之旅】方法重載 遞歸的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • 【Java探索之旅】方法的概念 定義 執(zhí)行流程 實參與形參的交互

    【Java探索之旅】方法的概念 定義 執(zhí)行流程 實參與形參的交互

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java編程秘籍 ?? 莫道桑榆晚,為霞尚滿天! 方法是Java編程中非常重要的概念,它能夠幫助我們組織代碼、實現(xiàn)代碼的重復使用,并使代碼更加清晰易懂。本文將介紹方法的概念、定義以及調(diào)用執(zhí)行過程,同時解釋實參和形參之間的關(guān)

    2024年04月14日
    瀏覽(26)
  • 開啟C++之旅(上):探索命名空間與函數(shù)特性(缺省參數(shù)和函數(shù)重載)

    開啟C++之旅(上):探索命名空間與函數(shù)特性(缺省參數(shù)和函數(shù)重載)

    之前淺顯的講解了數(shù)據(jù)結(jié)構(gòu)的部分內(nèi)容:數(shù)據(jù)結(jié)構(gòu)專欄 那么今天我們迎來了新的起點:C++的探索之旅 在c中: 嚴格的編譯器會直接 報錯 : rand我們都知道是產(chǎn)生隨機數(shù)的函數(shù),現(xiàn)在我定義了一個全局變量rand,顯然是有 命名沖突 所以c++就提供了解決方案 想必學過c的大家第一

    2024年02月01日
    瀏覽(30)
  • 【Java探索之旅】解密Java中的類型轉(zhuǎn)換與類型提升

    【Java探索之旅】解密Java中的類型轉(zhuǎn)換與類型提升

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java編程秘籍 ?? 莫道桑榆晚,為霞尚滿天! 在Java編程中,類型轉(zhuǎn)換是一個重要的概念,尤其在不同數(shù)據(jù)類型之間進行賦值和運算時。本文將介紹Java中的自動類型轉(zhuǎn)換和強制類型轉(zhuǎn)換,以及類型提升的概念。通過本文的學習,您將深入

    2024年03月17日
    瀏覽(93)
  • 【java探索之旅】邏輯控制掌握 順序結(jié)構(gòu) 分支語句

    【java探索之旅】邏輯控制掌握 順序結(jié)構(gòu) 分支語句

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java編程秘籍 ?? 莫道桑榆晚,為霞尚滿天! 邏輯控制是現(xiàn)代編程語言中的基本概念之一,它允許程序根據(jù)特定條件來決定執(zhí)行流程,使程序能夠根據(jù)不同情況做出相應(yīng)的處理。在編寫程序時,合理運用邏輯控制可以提高代碼的靈活性和

    2024年04月10日
    瀏覽(30)
  • 【Java探索之旅】掌握數(shù)組操作,輕松應(yīng)對編程挑戰(zhàn)

    【Java探索之旅】掌握數(shù)組操作,輕松應(yīng)對編程挑戰(zhàn)

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java編程秘籍 ?? 莫道桑榆晚,為霞尚滿天! 掌握數(shù)組的基本操作對于編寫高效的程序至關(guān)重要。本文將深入探討數(shù)組的一些常見操作,包括數(shù)組轉(zhuǎn)字符串、數(shù)組拷貝、求平均值、順序查找、二分查找、數(shù)組排序等。通過學習這些操作,

    2024年04月27日
    瀏覽(99)
  • 【Java探索之旅】從輸入輸出到猜數(shù)字游戲

    【Java探索之旅】從輸入輸出到猜數(shù)字游戲

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java編程秘籍 ?? 莫道桑榆晚,為霞尚滿天! 本文將介紹如何在Java中進行控制臺的輸入輸出操作,并通過一個簡單的猜數(shù)字游戲示例來展示分支語句、循環(huán)語句的運用。讓我們一起來探索這些有趣的編程技巧吧! 基本語法 : println 輸出

    2024年04月16日
    瀏覽(24)
  • 【Java探索之旅】我與Java的初相識(完):注釋,標識符,關(guān)鍵字

    【Java探索之旅】我與Java的初相識(完):注釋,標識符,關(guān)鍵字

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java入門到精通 ?? 莫道桑榆晚,為霞尚滿天! 在Java編程中,注釋、標識符和都是非常重要的概念。注釋可以幫助我們更好地理解和維護代碼,而規(guī)范的標識符命名和避免沖突可以提高代碼的可讀性和可維護性。本文將介

    2024年02月04日
    瀏覽(443)
  • 【Java探索之旅】我與Java的初相識(一):Java的特性與優(yōu)點及其發(fā)展史

    【Java探索之旅】我與Java的初相識(一):Java的特性與優(yōu)點及其發(fā)展史

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java入門到精通 ?? 莫道桑榆晚,為霞尚滿天! ? Java是一種優(yōu)秀的程序設(shè)計語言,它具有令人賞心悅目的語法和易于理解的語義。 ? 不僅如此Java還是一個有一系列計算機軟件和規(guī)范形成的技術(shù)體系,這個技術(shù)體系提供了完整的用于軟

    2024年02月05日
    瀏覽(84)
  • 【Java探索之旅】數(shù)據(jù)類型與變量,字面常量,整型變量

    【Java探索之旅】數(shù)據(jù)類型與變量,字面常量,整型變量

    ?? 嶼小夏 : 個人主頁 ??個人專欄 : Java入門到精通 ?? 莫道桑榆晚,為霞尚滿天! 在Java編程中,理解常量、數(shù)據(jù)類型以及變量是構(gòu)建程序邏輯的基礎(chǔ)。本文將深入介紹Java中的字面常量、數(shù)據(jù)類型和整型變量,幫助讀者掌握這些基礎(chǔ)概念,為編寫高效的Java程序打下堅實基

    2024年03月11日
    瀏覽(38)
  • 探索Java中的Set集合:獨一無二的元素之旅

    ?在Java編程中,我們經(jīng)常需要處理一組元素,并且確保其中沒有重復的元素。為了滿足這一需求,Java提供了一個強大的數(shù)據(jù)結(jié)構(gòu)——Set集合。Set集合是一種無序且不允許重復元素的集合,提供了高效的去重和查找功能。本文將深入探索Java中的Set集合,介紹其基本概念、常見

    2024年02月16日
    瀏覽(25)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包