Java 遞歸重難點(diǎn)分析詳解與練習(xí)
遞歸是什么
就是一個(gè)方法在執(zhí)行的時(shí)候,自己調(diào)用自己。
遞歸的要求:
1 有一個(gè)趨近于終止的條件
2 實(shí)現(xiàn)遞歸要去推導(dǎo)出一個(gè)遞推公式
遞歸就是遞下去,歸上來。求 5 的階乘,代碼舉例:
public static int fact(int n){
if(n == 1){
return n;
}
return n*fact(n - 1);
}
public static void main(String[] args) {
int n = 5;
int ret = fact(n);
System.out.println(ret);
}

這里的終止條件就是 n 等于 1 時(shí),返回 1 就停止遞歸了。否則一直遞歸下去會(huì)造成棧區(qū)的溢出。
分析遞歸的過程
這里就分析上面這個(gè)代碼的遞歸過程。

如上圖,這就是上面這段遞歸代碼的遞歸過程,先傳入 5 不符合 if 條件。所以繼續(xù)遞歸,直到遞歸到 n == 1 的時(shí)候,此時(shí)不再遞歸,而是返回 1 .至此,遞下去結(jié)束。開始?xì)w回來,歸回來的時(shí)候,最后返回 1 ,然后一路返回,直到最后一個(gè) return 結(jié)束,也就是返回 120 。
遞歸練習(xí)
按順序打印一個(gè)數(shù)的每一位
例如:1234 打印出 1 2 3 4 代碼示例:
public static void print1(int n){
if(n == 0){
return;
}
print1(n / 10);
System.out.print(n % 10+" ");
}
public static void main(String[] args) {
int n = 1234;
print1(n);
}

整個(gè)遞歸過程如下所示:

到此這篇關(guān)于Java 遞歸重難點(diǎn)分析詳解的文章就介紹到這了,更多相關(guān)Java 遞歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ThreadLocal線程在Java框架中的應(yīng)用及原理深入理解
這篇文章主要介紹了ThreadLocal在Java框架中的應(yīng)用及原理深入理解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2024-01-01
feign post參數(shù)對(duì)象不加@RequestBody的使用說明
這篇文章主要介紹了feign post參數(shù)對(duì)象不加@RequestBody的使用說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-10-10
深入了解JVM(Java虛擬機(jī))內(nèi)存結(jié)構(gòu)
Java虛擬機(jī)(Java Virtual Machine,JVM)是Java程序的運(yùn)行環(huán)境,它是一個(gè)抽象的計(jì)算機(jī)模型,通過解釋和執(zhí)行Java字節(jié)碼來運(yùn)行Java程序,本將大家深入了解JVM(Java虛擬機(jī))內(nèi)存結(jié)構(gòu),需要的朋友可以參考下2023-08-08
關(guān)于MyBatis結(jié)果映射的實(shí)例總結(jié)
結(jié)果集映射主要是為了解決屬性名和類型名不一致的問題,下面這篇文章主要給大家介紹了關(guān)于MyBatis結(jié)果映射的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-05-05
基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息
這篇文章主要為大家詳細(xì)介紹了基于Springboot執(zhí)行多個(gè)定時(shí)任務(wù)并動(dòng)態(tài)獲取定時(shí)任務(wù)信息,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-04-04
Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于Vue實(shí)現(xiàn)驗(yàn)證碼登錄的超詳細(xì)步驟,我們?cè)谑褂胿ue進(jìn)行前端開發(fā)時(shí)都需要登錄驗(yàn)證,文中通過代碼示例介紹的非常詳細(xì),需要的朋友可以參考下2023-09-09
Mybatis-Plus最優(yōu)化持久層開發(fā)過程
Mybatis-plus(簡(jiǎn)稱MP)是一個(gè)Mybatis的增強(qiáng)工具,在mybatis的基礎(chǔ)上只做增強(qiáng)不做改變,提高效率,自動(dòng)生成單表的CRUD功能,這篇文章主要介紹了Mybatis-Plus最優(yōu)化持久層開發(fā),需要的朋友可以參考下2024-07-07
關(guān)于Maven parent.relativePath說明
Maven中的relativePath用于指定父項(xiàng)目pom.xml的相對(duì)路徑,默認(rèn)值為../pom.xml,這個(gè)配置幫助Maven在構(gòu)建時(shí)定位父模塊的位置,確保模塊間的依賴關(guān)系正確,relativePath可以指向本地或遠(yuǎn)程倉庫中的父項(xiàng)目,如果不需要尋找父項(xiàng)目,可以將其設(shè)置為空2024-09-09

