Java遞歸簡(jiǎn)單實(shí)現(xiàn)n的階乘
1.遞歸的基本概念
在說(shuō)什么是遞歸之前,我想大家定見(jiàn)過(guò)這個(gè)表情包吧
什么是遞歸:
程序調(diào)用自身的編程技巧稱為遞歸( recursion
)遞歸的能力在于用有限的語(yǔ)句來(lái)定義對(duì)象的無(wú)限集合。一般來(lái)說(shuō),遞歸需要有邊界條件、遞歸前進(jìn)段和遞歸返回段。當(dāng)邊界條件不滿足時(shí),遞歸前進(jìn);當(dāng)邊界條件滿足時(shí),遞歸返回。
遞歸的用途:
遞歸可用于解決各種數(shù)學(xué)問(wèn)題:八皇后問(wèn)題、漢諾塔問(wèn)題、階乘問(wèn)題、迷宮問(wèn)題等
遞歸也可用于各種算法:快排、歸并排序、二分查找、分治算法等
2.遞歸的重要規(guī)則
- 執(zhí)行一個(gè)方法就創(chuàng)建一個(gè)新的受保護(hù)的獨(dú)立??臻g
- 方法的局部變量是獨(dú)立的
- 如果方法使用的是引用數(shù)據(jù)類型的變量那么就共享引用類型的數(shù)據(jù)
- 遞歸必須向退出遞歸的條件逼近
- 當(dāng)一個(gè)方法執(zhí)行完畢或者遇到return就會(huì)返回,遵守誰(shuí)調(diào)用就將結(jié)果返回給誰(shuí)
3.利用遞歸實(shí)現(xiàn)n的階乘
代碼實(shí)現(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ù)沒(méi)有階乘,如果參數(shù)是負(fù)數(shù)就拋出異常 if (n<0){ throw new RuntimeException("負(fù)數(shù)沒(méi)有階乘"); } //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遞歸簡(jiǎn)單實(shí)現(xiàn)n的階乘的文章就介紹到這了,更多相關(guān)Java遞歸內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Struts2學(xué)習(xí)筆記(9)-Result配置全局結(jié)果集
這篇文章主要介紹Struts2中使用Result配置全局結(jié)果集的方法,希望能給大家做一個(gè)參考。2016-06-06詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問(wèn)題
這篇文章主要介紹了詳解SpringMVC中設(shè)置靜態(tài)資源不被攔截的問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-02-02java實(shí)現(xiàn)對(duì)map的字典序排序操作示例
這篇文章主要介紹了java實(shí)現(xiàn)對(duì)map的字典序排序操作,結(jié)合實(shí)例形式分析了java參照微信官網(wǎng)算法實(shí)現(xiàn)的字典序排序操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下2019-07-07springboot的http.server.requests服務(wù)請(qǐng)求流程源碼
這篇文章主要為大家介紹了springboot的http.server.requests服務(wù)請(qǐng)求流程源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-12-12