java遞歸算法實(shí)例分析
遞歸算法設(shè)計(jì)的基本思想是:
對于一個復(fù)雜的問題,把原問題分解為若干個相對簡單類同的子問題,繼續(xù)下去直到子問題簡單到能夠直接求解,也就是說到了遞推的出口,這樣原問題就有遞推得解。
在做遞歸算法的時候,一定要把握住出口,也就是做遞歸算法必須要有一個明確的遞歸結(jié)束條件。這一點(diǎn)是非常重要的。其實(shí)這個出口是非常好理解的,就是一個條件,當(dāng)滿足了這個條件的時候我們就不再遞歸了。
關(guān)鍵要抓住的是:
(1)遞歸出口
(2)地推逐步向出口逼近
遞歸就是方法自身調(diào)用自身的行為,注意要寫好遞歸頭,也就是什么時候退出遞歸,
避免出現(xiàn)死循環(huán)。
實(shí)例1,通過遞歸打印1~100
package com.lanhuigu.base;
public class CursionTest {
private static int i = 0;
/**
* 遞歸打印1到100
*/
public static void testCursion01() {
i++;
// 自增
if (i <= 100) {
// 小于等于100時回調(diào),否則跳出回調(diào),避免死循環(huán)
System.out.println(i);
testCursion01();
// 回調(diào): 自身調(diào)用自身
} else {
System.out.println("Game Over!");
}
}
public static void main(String[] args) {
testCursion01();
// 打印1~100
}
}
實(shí)例2,通過遞歸計(jì)算某個數(shù)的階乘
package com.lanhuigu.base;
public class CursionTest {
/**
* 遞歸計(jì)算某個數(shù)的階乘
*/
public static int testFactorial(int n) {
if (n == 1) {
return 1;
} else {
return n*testFactorial(n-1);
}
}
public static void main(String[] args) {
System.out.println(testFactorial(5));
// 計(jì)算5的階乘
}
}
關(guān)于遞歸計(jì)算階乘,遞歸內(nèi)存分析結(jié)構(gòu)圖:

先放長線,最后收線,然后把魚拉上岸。
總結(jié)
以上就是本文關(guān)于java遞歸算法實(shí)例分析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站其他相關(guān)專題。如有不足之處,歡迎留言指出。感謝朋友們對本站的支持!
相關(guān)文章
一篇超詳細(xì)的SpringBoot整合MybatisPlus的文章
這篇文章主要介紹了springboot整合Mybatis-plus的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-07-07
Eclipse?2022?設(shè)置中文漢化的超詳細(xì)圖文教程
這篇文章主要介紹了Eclipse?2022?設(shè)置中文漢化的超詳細(xì)圖文教程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-03-03
如何開發(fā)基于Netty的HTTP/HTTPS應(yīng)用程序
HTTP/HTTPS是最常見的協(xié)議套件之一,并且隨著智能手機(jī)的成功,它的應(yīng)用也日益廣泛,因?yàn)閷τ谌魏喂緛碚f,擁有一個可以被移動設(shè)備訪問的網(wǎng)站幾乎是必須的。下面就來看看如何開發(fā)基于Netty的HTTP/HTTPS應(yīng)用程序2021-06-06
Java用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的示例
下面小編就為大家?guī)硪黄狫ava用數(shù)組實(shí)現(xiàn)循環(huán)隊(duì)列的示例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-09-09
JSON的String字符串與Java的List列表對象的相互轉(zhuǎn)換
這篇文章主要介紹了JSON的String字符串與Java的List列表對象的相互轉(zhuǎn)換,如果在瀏覽器端JSON是list則轉(zhuǎn)為string結(jié)構(gòu)來處理,需要的朋友可以參考下2016-04-04
EVCache緩存在Spring Boot中的實(shí)戰(zhàn)示例
這篇文章主要介紹了EVCache緩存在Spring Boot中的實(shí)戰(zhàn)示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-12-12
Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例
這篇文章主要介紹了Spring Cloud Alibaba 使用 Feign+Sentinel 完成熔斷的示例,幫助大家更好的理解和學(xué)習(xí)使用Spring Cloud,感興趣的朋友可以了解下2021-03-03

