




版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第Java中的什么場(chǎng)景使用遞歸,如何使用遞歸目錄什么是遞歸?遞歸有什么優(yōu)點(diǎn)?迭代和遞歸的區(qū)別遞歸的三個(gè)條件什么場(chǎng)景下適合使用遞歸場(chǎng)景一場(chǎng)景二總結(jié)Java遞歸算法一、概述二、應(yīng)用場(chǎng)景三、示例四、實(shí)際示例五、遞歸的缺點(diǎn)
什么是遞歸?
程序調(diào)用自身的編程技巧叫做遞歸。
遞歸有什么優(yōu)點(diǎn)?
遞歸算法:代碼簡(jiǎn)潔、清晰,并且容易驗(yàn)證正確性。在一定的程度上還能幫我們減少很多重復(fù)代碼。
迭代和遞歸的區(qū)別
迭代是逐漸逼近,用新值覆蓋舊值,直到滿足條件后結(jié)束,不保存中間值,空間利用率高。
遞歸是將一個(gè)問(wèn)題分解為若干相對(duì)小一點(diǎn)的問(wèn)題,遇到遞歸出口再原路返回,因此必須保存相關(guān)的中間值,這些中間值壓入棧保存,問(wèn)題規(guī)模較大時(shí)會(huì)占用大量?jī)?nèi)存。
遞歸的三個(gè)條件
邊界條件
遞歸前進(jìn)段
遞歸返回段
當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。
什么場(chǎng)景下適合使用遞歸
場(chǎng)景一
項(xiàng)目當(dāng)中菜單很多都是配置的,并且菜單有時(shí)候都是分好幾級(jí)的,當(dāng)我給他配置最下級(jí)的時(shí)候,那么我還得把他的上級(jí)保存起來(lái)才能用,但是我們又不確定他有幾個(gè)上級(jí),這個(gè)時(shí)候可以采用遞歸調(diào)用。
publicvoidpackageParent(SetStringparentIdSet){
SetStringparentIdSet1=newHashSet();
for(StringparentId:parentIdSet){
MenuOrgmenuOrg=newMenuOrg();
Menumenu=menuRepository.findOne(parentId);
if(menu==null){
continue;
menuOrg.setMenuId(menu.getMenuId());
menuOrg.setProType(menu.getProType());
menuOrgRepository.save(menuOrg);
if(menu.getParentId()!=null){
parentIdSet1.add(menu.getParentId());
//判斷parentIdSet1是否為空
if(!CommonUtils.isCollectionBlankOrEmpty(parentIdSet1)){
packageParent(parentIdSet1);
}
場(chǎng)景二
計(jì)算5的階乘
publicclassTest{
publicstaticvoidmain(String[]args){
System.out.println(f(5));
publicstaticintf(intn){
if(1==n)
return1;
else
returnn*f(n-1);
}
此題中,按照遞歸的三個(gè)條件來(lái)分析:
(1)邊界條件:階乘,乘到最后一個(gè)數(shù),即1的時(shí)候,返回1,程序執(zhí)行到底;
(2)遞歸前進(jìn)段:當(dāng)前的參數(shù)不等于1的時(shí)候,繼續(xù)調(diào)用自身;
(3)遞歸返回段:從最大的數(shù)開始乘,如果當(dāng)前參數(shù)是5,那么就是54,即5(5-1),即n*(n-1)
總結(jié)
遞歸中一定有迭代,但是迭代中不一定有遞歸,大部分可以相互轉(zhuǎn)換。
能用迭代的不用遞歸,遞歸調(diào)用函數(shù),計(jì)算有重復(fù),浪費(fèi)空間,并且遞歸太深容易造成堆棧的溢出。
Java遞歸算法
一、概述
Java遞歸:簡(jiǎn)單說(shuō)就是函數(shù)自身直接或間接調(diào)用函數(shù)的本身。
二、應(yīng)用場(chǎng)景
若:一個(gè)功能在被重復(fù)使用,并每次使用時(shí),參與運(yùn)算的結(jié)果和上一次調(diào)用有關(guān),這時(shí)就可以使用遞歸來(lái)解決這個(gè)問(wèn)題。
使用要點(diǎn):
1,遞歸一定明確條件。否則容易棧溢出。
2,注意一下遞歸的次數(shù)。
三、示例
最簡(jiǎn)單的遞歸演示
publicclassrecursionDemo{
publicstaticvoidmain(String[]args){
show();
privatestaticvoidshow(){
method();
privatestaticvoidmethod(){
show();
}
四、實(shí)際示例
我們都知道6的二進(jìn)制是110,那么程序是怎么執(zhí)行的呢?
代碼示例:
publicstaticvoidmain(String[]args){
toBin(6);
privatestaticvoidtoBin(intnum){
if(num0){
//取余
System.out.println(num%2);
toBin(num/2);
}
運(yùn)行過(guò)程:
遞歸演示二:計(jì)算1-5,求和
publicstaticvoidmain(String[]args){
//1-5求和
intsum=getSum(5);
System.out.println(sum);
privatestaticintgetSum(intnum){
intx=9;
if(num==1){
return1;
returnnum+getSum(num-1);
}
程序運(yùn)行圖:
五、遞歸的缺點(diǎn)
在使用遞歸時(shí),一定要考慮遞歸的次數(shù),負(fù)責(zé)很容易造成虛擬機(jī)“棧溢出”。
仍然使用上面的求和代碼,只是這次將求和基數(shù)變?yōu)?0000000,看看結(jié)果如何
publicstaticvoidmain(String[]args){
//1-90000000求和
intsum=getSum(90000000);
System.out.println(sum);
privatestaticintgetSum(i
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年企業(yè)管理師考試試題及答案拓展
- 2025年統(tǒng)計(jì)師職業(yè)資格考試試卷及答案
- 2025年數(shù)字營(yíng)銷師考試試題及答案
- 2025年護(hù)理管理與實(shí)踐考試試題及答案
- 2025年創(chuàng)意寫作與文學(xué)分析考試卷及答案
- 知識(shí)產(chǎn)權(quán)收益分割與科技成果轉(zhuǎn)化合作協(xié)議
- 金融機(jī)構(gòu)間貨幣結(jié)算服務(wù)協(xié)議補(bǔ)充
- 離職人員保密協(xié)議與競(jìng)業(yè)限制合同(體育用品行業(yè))
- 購(gòu)物中心珠寶區(qū)品牌租賃與區(qū)域市場(chǎng)合作合同
- 城市級(jí)停車誘導(dǎo)系統(tǒng)與城市供電合同
- 光子量子計(jì)算技術(shù)
- 【企業(yè)發(fā)展能力分析實(shí)例-以某公司為例9100字(論文)】
- 教科版五年級(jí)科學(xué)下冊(cè)第四單元教學(xué)設(shè)計(jì)教案
- 思想道德與法治2023版教學(xué)設(shè)計(jì)第二章 追求遠(yuǎn)大理想 堅(jiān)定崇高信念
- 21ZJ111 變形縫建筑構(gòu)造
- 個(gè)人不擔(dān)當(dāng)不作為問(wèn)題清單及整改措施
- 《口袋妖怪漆黑的魅影》圖文攻略全周目
- 《網(wǎng)店美工實(shí)訓(xùn)教程》教學(xué)教案
- 兒科護(hù)理學(xué)第二章生長(zhǎng)發(fā)育
- 德語(yǔ)四級(jí)真題2023
- 2023屆高考模擬作文“人生有兩段路要走”漫畫作文導(dǎo)寫及范文
評(píng)論
0/150
提交評(píng)論