最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java遞歸簡單實現(xiàn)n的階乘

 更新時間:2022年01月24日 17:36:32   作者:HairLossException  
這篇文章主要介紹了Java遞歸簡單實現(xiàn)n的階乘,遞歸(recursion)就是子程序(或函數(shù))直接調(diào)用自己或通過一系列調(diào)用語句間接調(diào)用自己,是一種描述問題和解決問題的基本方法,下面我們舉一個小小的例子詳情了解一下,需要的朋友可以參考下

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)步驟

    這篇文章主要介紹了Spring Cloud Alibaba整合Sentinel的實現(xiàn)步驟,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-10-10
  • Java從控制臺接受輸入字符的簡單方法

    Java從控制臺接受輸入字符的簡單方法

    這篇文章主要介紹了Java從控制臺接受輸入字符的簡單方法,需要的朋友可以參考下
    2014-02-02
  • 解決mybatis-plus使用jdk8的LocalDateTime 查詢時報錯的方法

    解決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的方法實例

    Java:DocumentBuilderFactory調(diào)用XML的方法實例,需要的朋友可以參考一下
    2013-04-04
  • Java模擬單鏈表和雙端鏈表數(shù)據(jù)結(jié)構(gòu)的實例講解

    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實現(xiàn)去掉字符串重復(fù)字母的方法,涉及java針對字符串的遍歷、判斷、運(yùn)算等相關(guān)操作技巧,需要的朋友可以參考下
    2017-12-12
  • IDEA 中 maven 的 Lifecycle 和Plugins 的區(qū)別

    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郵件功能

    這篇文章主要給大家介紹了重學(xué)SpringBoot3之如何發(fā)送Email郵件功能的相關(guān)資料,文中包括環(huán)境準(zhǔn)備、項目配置、代碼實現(xiàn)、最佳實踐和安全性建議,通過采用異步發(fā)送、重試機(jī)制、限流等最佳實踐,可以構(gòu)建一個健壯的郵件發(fā)送系統(tǒng),需要的朋友可以參考下
    2024-11-11
  • ByteArrayOutputStream簡介和使用_動力節(jié)點Java學(xué)院整理

    ByteArrayOutputStream簡介和使用_動力節(jié)點Java學(xué)院整理

    ByteArrayOutputStream 是字節(jié)數(shù)組輸出流。它繼承于OutputStream。這篇文章主要介紹了ByteArrayOutputStream簡介和使用,需要的朋友可以參考下
    2017-05-05
  • 用Java編寫經(jīng)典小程序

    用Java編寫經(jīng)典小程序

    非常實用的12種基礎(chǔ)算法的經(jīng)典案例,對于初學(xué)者來說有很大的幫助,數(shù)量有限需要的朋友可以參考下
    2018-04-04

最新評論

公安县| 广饶县| 沂南县| 黄山市| 曲阳县| 云梦县| 城固县| 鱼台县| 灯塔市| 二连浩特市| 马尔康县| 高安市| 长宁县| 普安县| 宁化县| 蓬溪县| 镶黄旗| 克山县| 铜山县| 丰城市| 庆元县| 辉县市| 许昌县| 夏河县| 吕梁市| 股票| 来安县| 砀山县| 常宁市| 阜康市| 宽甸| 连平县| 祥云县| 琼海市| 滦南县| 达拉特旗| 微博| 临夏县| 海晏县| 江永县| 新郑市|