亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

Java 方法遞歸的思路詳解

 更新時(shí)間:2022年04月14日 10:23:49   作者:Killing Vibe  
程序調(diào)用自身的編程技巧稱為遞歸( recursion)。遞歸做為一種算法在程序設(shè)計(jì)語(yǔ)言中廣泛應(yīng)用。但是如果沒(méi)終止條件會(huì)造成死循環(huán),所以遞歸代碼里要有結(jié)束自調(diào)自的條件,接下來(lái)講解一下學(xué)習(xí)遞歸的思路

前言

今天給老鐵們回顧一下遞歸的思路以及方法,也是給自己的一個(gè)歸納總結(jié)。

一、什么是方法遞歸

所謂的方法遞歸,就是在一個(gè)方法(函數(shù))執(zhí)行的內(nèi)部,自己調(diào)用了自己的過(guò)程,稱之為 “遞歸” 。

遞歸分為兩個(gè)子過(guò)程:

  • 遞過(guò)程:函數(shù)不斷地調(diào)用自身,直到走到函數(shù)的終止條件,第一階段結(jié)束。
  • 歸過(guò)程:函數(shù)不斷地返回的過(guò)程。

例如, 我們求 N! 起始條件: N = 1 的時(shí)候, N! 為 1. 這個(gè)起始條件相當(dāng)于遞歸的結(jié)束條件. 遞歸公式: 求 N! ,

直接不好求, 可以把問(wèn)題轉(zhuǎn)換成 N! => N * (N-1)!

示例:遞歸求N的階乘

public static void main(String[] args) {
    int n = 5;
    int ret = factor(n);
    System.out.println("ret = " + ret);
}
public static int factor(int n) {
    if (n == 1) {
        return 1;
   }
    return n * factor(n - 1); // factor 調(diào)用函數(shù)自身
}
// 執(zhí)行結(jié)果
ret = 120

二、什么場(chǎng)景下能用遞歸

a.一個(gè)大問(wèn)題(這個(gè)方法的功能)可以拆分成若干個(gè)子問(wèn)題的解.

b.拆分后的子問(wèn)題和原問(wèn)題除了數(shù)據(jù)規(guī)模不同,解決思路完全相同.

c.必須存在遞歸的終止條件(不會(huì)無(wú)限拆分下去,一定能走到底~).

(看不懂先看下面(●ˇ∀ˇ●))

三、如何寫出遞歸代碼-重點(diǎn)

  • 先考慮這個(gè)函數(shù)的終止條件

比如上面的栗子:求N的階乘。

拿求5的階乘做例子:

在這里插入圖片描述

我們把大問(wèn)題(5的階乘)一直拆分到1的時(shí)候,問(wèn)題無(wú)法繼續(xù)拆分下去了,這個(gè)子問(wèn)題就是這個(gè)遞歸的最終條件。

所以我們寫代碼的時(shí)候,可以先把最終條件寫上:

if (n == 1) {
        return 1;
   }
  • 假設(shè)這個(gè)函數(shù)已經(jīng)寫好了(注意這個(gè)方法的語(yǔ)義)

在寫遞歸函數(shù)的時(shí)候,千萬(wàn)不要糾結(jié)這個(gè)函數(shù)內(nèi)部是如何實(shí)現(xiàn)的,而是要注意這個(gè)函數(shù)有什么功能(假設(shè)這個(gè)函數(shù)別人已經(jīng)寫好了),我們把它當(dāng)作一個(gè)黑盒子,你只是去調(diào)用這個(gè)函數(shù)罷了。

public static int factor(int n)

比如這個(gè)函數(shù)只能傳入一個(gè)n,目前我們只能知道這個(gè)n是多少,而n的階乘等于n* [(n-1)!],但是我們并不知道n-1的階乘是多少,那么就調(diào)用這個(gè)別人寫好的“黑盒子”。這個(gè)黑盒子的功能可以實(shí)現(xiàn)某個(gè)數(shù)的階乘。

n * factor(n - 1) // n*黑盒子

說(shuō)白了就是,把這個(gè)factor函數(shù)當(dāng)作別人已經(jīng)寫好了,你只需要關(guān)注如何去調(diào)用這個(gè)方法去輔助你解決問(wèn)題就可以了!

總結(jié)

寫出遞歸其實(shí)=終止條件+利用黑盒子去解決剩下的問(wèn)題,注意傳入的參數(shù)就可以很快把遞歸代碼寫出來(lái)(●ˇ∀ˇ●)。

到此這篇關(guān)于Java 方法遞歸的思路詳解的文章就介紹到這了,更多相關(guān)Java 遞歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java開發(fā)就業(yè)信息管理系統(tǒng)

    java開發(fā)就業(yè)信息管理系統(tǒng)

    這篇文章主要為大家詳細(xì)介紹了java開發(fā)就業(yè)信息管理平臺(tái),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-06-06
  • java利用udp實(shí)現(xiàn)發(fā)送數(shù)據(jù)

    java利用udp實(shí)現(xiàn)發(fā)送數(shù)據(jù)

    這篇文章主要為大家詳細(xì)介紹了java利用udp實(shí)現(xiàn)發(fā)送數(shù)據(jù),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-07-07
  • Java Web開發(fā)項(xiàng)目中中文亂碼解決方法匯總

    Java Web開發(fā)項(xiàng)目中中文亂碼解決方法匯總

    這篇文章主要為大家詳細(xì)匯總了Java Web開發(fā)項(xiàng)目中中文亂碼的解決方法,分析了5種Java Web中文亂碼情況,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 詳解Spring Boot中使用AOP統(tǒng)一處理Web請(qǐng)求日志

    詳解Spring Boot中使用AOP統(tǒng)一處理Web請(qǐng)求日志

    本篇文章主要介紹了詳解Spring Boot中使用AOP統(tǒng)一處理Web請(qǐng)求日志,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    Java文件處理之使用XWPFDocument導(dǎo)出Word文檔

    最近因項(xiàng)目開發(fā)的需要,整理了一份用JAVA導(dǎo)出WORD文檔,下面這篇文章主要給大家介紹了關(guān)于Java文件處理之使用XWPFDocument導(dǎo)出Word文檔的相關(guān)資料,需要的朋友可以參考下
    2023-12-12
  • idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟

    idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟

    這篇文章主要介紹了idea 自動(dòng)生成類注釋和方法注釋的實(shí)現(xiàn)步驟,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 詳解Java函數(shù)式編程和lambda表達(dá)式

    詳解Java函數(shù)式編程和lambda表達(dá)式

    這篇文章主要介紹了Java函數(shù)式編程和lambda表達(dá)式,對(duì)lambda感興趣的同學(xué),一定要看一下
    2021-04-04
  • Java集合繼承體系詳解

    Java集合繼承體系詳解

    這篇文章主要為大家詳細(xì)介紹了Java集合繼承體系,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Java?3年面試經(jīng)驗(yàn)告訴你Mybatis是如何進(jìn)行分頁(yè)的

    Java?3年面試經(jīng)驗(yàn)告訴你Mybatis是如何進(jìn)行分頁(yè)的

    這篇文章主要介紹了Java?3年面試經(jīng)驗(yàn)告訴你Mybatis是如何進(jìn)行分頁(yè)的,對(duì)于任何ORM框架,分頁(yè)的實(shí)現(xiàn)邏輯無(wú)外乎兩種,不管怎么包裝,最終給到開發(fā)者的,只是使用上的差異而已,本文給大家講解的很明白,感興趣的朋友一起看看吧
    2022-09-09
  • Spring Boot配置動(dòng)態(tài)更新問(wèn)題

    Spring Boot配置動(dòng)態(tài)更新問(wèn)題

    這篇文章主要介紹了Spring Boot配置動(dòng)態(tài)更新問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-09-09

最新評(píng)論