摘要:什么是遞歸算法遞歸算法是把問題轉(zhuǎn)化為規(guī)模縮小了的同類問題的子問題,然后遞歸調(diào)用函數(shù)或過程來表示問題的解。遞歸方法在函數(shù)或子過程的內(nèi)部,直接或者間接地調(diào)用自己的算法。遞歸實戰(zhàn)下面用遞歸來實現(xiàn)從的小例子。
什么是遞歸算法
遞歸算法是把問題轉(zhuǎn)化為規(guī)??s小了的同類問題的子問題,然后遞歸調(diào)用函數(shù)(或過程)來表示問題的解。一個過程(或函數(shù))直接或間接調(diào)用自己本身,這種過程(或函數(shù))叫遞歸過程(或函數(shù))。
遞歸過程一般通過函數(shù)或子過程來實現(xiàn)。遞歸方法:在函數(shù)或子過程的內(nèi)部,直接或者間接地調(diào)用自己的算法。遞歸其實就是在棧內(nèi)存中不斷的加載同一個函數(shù)
什么時候用遞歸呢?當一個功能被重復使用,而每一次使用該功能時的參數(shù)不確定,都由上次的功能元素結(jié)果來確定。
遞歸的注意事項必須有可最終達到的終止條件,否則程序?qū)⑾萑霟o窮循環(huán)出現(xiàn)棧內(nèi)存溢出錯誤(StackOverflowError);
子問題在規(guī)模上比原問題小,或更接近終止條件;
子問題可通過再次遞歸調(diào)用求解或因滿足終止條件而直接求解;
子問題的解應能組合為整個問題的解。
遞歸實戰(zhàn)下面用遞歸來實現(xiàn)從1+2+3+...N的小例子。
public static void main(String[] args) { System.out.println(sum(10)); } private static int sum(int n) { if (n == 1) { return n; } else { return n + sum(n - 1); } }
上面的例子采用遞歸算法從1加到10,看著是倒著來的從10加到1,每次減1進行相加真到最后為1終止。
推薦閱讀干貨:Spring Boot & Cloud 最強技術(shù)教程
工具:推薦一款在線創(chuàng)作流程圖、思維導圖軟件
分享Java干貨,高并發(fā)編程,熱門技術(shù)教程,微服務及分布式技術(shù),架構(gòu)設(shè)計,區(qū)塊鏈技術(shù),人工智能,大數(shù)據(jù),Java面試題,以及前沿熱門資訊等。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71389.html
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進,適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進,適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 1692·2023-04-25 20:16
閱讀 3874·2021-10-09 09:54
閱讀 2708·2021-09-04 16:40
閱讀 2525·2019-08-30 15:55
閱讀 842·2019-08-29 12:37
閱讀 2746·2019-08-26 13:55
閱讀 2914·2019-08-26 11:42
閱讀 3158·2019-08-23 18:26