Java遞歸簡單實現(xiàn)n的階乘
1.遞歸的基本概念
在說什么是遞歸之前,我想大家定見過這個表情包吧

什么是遞歸:
程序調(diào)用自身的編程技巧稱為遞歸( recursion)遞歸的能力在于用有限的語句來定義對象的無限集合。一般來說,遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時,遞歸前進(jìn);當(dāng)邊界條件滿足時,遞歸返回。
遞歸的用途:
遞歸可用于解決各種數(shù)學(xué)問題:八皇后問題、漢諾塔問題、階乘問題、迷宮問題等
遞歸也可用于各種算法:快排、歸并排序、二分查找、分治算法等
2.遞歸的重要規(guī)則
- 執(zhí)行一個方法就創(chuàng)建一個新的受保護(hù)的獨立棧空間
- 方法的局部變量是獨立的
- 如果方法使用的是引用數(shù)據(jù)類型的變量那么就共享引用類型的數(shù)據(jù)
- 遞歸必須向退出遞歸的條件逼近
- 當(dāng)一個方法執(zhí)行完畢或者遇到return就會返回,遵守誰調(diào)用就將結(jié)果返回給誰
3.利用遞歸實現(xiàn)n的階乘
代碼實現(xiàn):
public class RecursionTest {
public static void main(String[] args) {
int x = factorial(4);
System.out.println(x); //輸出結(jié)果24
}
public static int factorial(int n){
//負(fù)數(shù)沒有階乘,如果參數(shù)是負(fù)數(shù)就拋出異常
if (n<0){
throw new RuntimeException("負(fù)數(shù)沒有階乘");
}
//0和1的階乘都是1
if (n == 1||n ==0){
return 1;
}else {
//如果參數(shù)不是負(fù)數(shù)且大于1就遞歸調(diào)用factorial方法
int m = factorial(n - 1)*n;
return m;
}
}
}

到此這篇關(guān)于Java遞歸簡單實現(xiàn)n的階乘的文章就介紹到這了,更多相關(guān)Java遞歸內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Spring Cloud Alibaba整合Sentinel的實現(xiàn)步驟
這篇文章主要介紹了Spring Cloud Alibaba整合Sentinel的實現(xiàn)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-10-10
解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法
這篇文章主要介紹了解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08
Java:DocumentBuilderFactory調(diào)用XML的方法實例
Java:DocumentBuilderFactory調(diào)用XML的方法實例,需要的朋友可以參考一下2013-04-04
Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例講解
這篇文章主要介紹了Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例,注意這里的雙端鏈表不是雙向鏈表,是在單鏈表的基礎(chǔ)上保存有對最后一個鏈接點的引用,需要的朋友可以參考下2016-04-04
Java實現(xiàn)去掉字符串重復(fù)字母的方法示例
這篇文章主要介紹了Java實現(xiàn)去掉字符串重復(fù)字母的方法,涉及java針對字符串的遍歷、判斷、運算等相關(guān)操作技巧,需要的朋友可以參考下2017-12-12
IDEA 中 maven 的 Lifecycle 和Plugins&n
IDEA 主界面右側(cè) Maven 標(biāo)簽欄有同樣的命令,比如 install,既在 Plugins 中存在,也在 Lifecycle中存在,到底選哪個?二者又有什么區(qū)別呢?下面小編給大家介紹下IDEA 中 maven 的 Lifecycle 和Plugins 的區(qū)別,感興趣的朋友一起看看吧2023-03-03
重學(xué)SpringBoot3之如何發(fā)送Email郵件功能
這篇文章主要給大家介紹了重學(xué)SpringBoot3之如何發(fā)送Email郵件功能的相關(guān)資料,文中包括環(huán)境準(zhǔn)備、項目配置、代碼實現(xiàn)、最佳實踐和安全性建議,通過采用異步發(fā)送、重試機制、限流等最佳實踐,可以構(gòu)建一個健壯的郵件發(fā)送系統(tǒng),需要的朋友可以參考下2024-11-11
ByteArrayOutputStream簡介和使用_動力節(jié)點Java學(xué)院整理
ByteArrayOutputStream 是字節(jié)數(shù)組輸出流。它繼承于OutputStream。這篇文章主要介紹了ByteArrayOutputStream簡介和使用,需要的朋友可以參考下2017-05-05

