Java 實(shí)現(xiàn)階乘算法

Java 實(shí)現(xiàn)階乘算法

階乘算法如下:

以下列出 0 至 20 的階乘:

0!=1钻哩,(0 的階乘是存在的)

1屹堰!=1,

2街氢!=2扯键,

3!=6珊肃,

4荣刑!=24馅笙,

5!=120厉亏,

6董习!=720,

7爱只!=5040皿淋,

8!=40320

9恬试!=362880

10窝趣!=3628800

11!=39916800

12训柴!=479001600

13哑舒!=6227020800

14!=87178291200

15幻馁!=1307674368000

16洗鸵!=20922789888000

17!=355687428096000

18宣赔!=6402373705728000

19预麸!=121645100408832000

20!=2432902008176640000

而當(dāng) n≥5 時(shí)儒将,n吏祸!的個(gè)位數(shù)字都是0。

java代碼實(shí)現(xiàn)

package com.leo.kang.interview;
 
import java.math.BigDecimal;
 
public class Factorial {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        System.out.println("--------遞歸算法-------");
        System.out.println(factorialRecursive(20));
 
        System.out.println("--------循環(huán)算法-------");
        System.out.println(factorialLoop(25));
         
        System.out.println("--------BigDecimal算法-------");
        System.out.println(factorial(new BigDecimal(100)));
    }
 
    /**
     * 遞歸實(shí)現(xiàn)階乘算法
     *
     * @param n
     * @return
     */
    public static long factorialRecursive(int n) {
        // 階乘對(duì)整數(shù)才有意義
        if (n < 0) {
            return -1;
        }
 
        // 0钩蚊!=1贡翘,(0 的階乘是存在的)
        if (n == 0) {
            return 1;
        }
 
        if (n < 2)
            return n * 1;
        return n * factorialRecursive(n - 1);
    }
 
    /**
     * 循環(huán)實(shí)現(xiàn)階乘算法
     * @param n
     * @return
     */
    public static long factorialLoop(int n) {
        // 階乘對(duì)整數(shù)才有意義
        if (n < 0) {
            return -1;
        }
 
        // 0!=1砰逻,(0 的階乘是存在的)
        if (n == 0) {
            return 1;
        }
 
        // 初始值必須為1才有意義
        long result = 1;
        for (int i = n; i > 0; i--) {
            result *= i;
        }
 
        return result;
    }
     
    public static BigDecimal factorial(BigDecimal n){ 
        BigDecimal bd1 = new BigDecimal(1);//BigDecimal類型的1 
        BigDecimal bd2 = new BigDecimal(2);//BigDecimal類型的2</span><span> 
        BigDecimal result = bd1;//結(jié)果集鸣驱,初值取1 
        while(n.compareTo(bd1) > 0){//參數(shù)大于1,進(jìn)入循環(huán) 
            result = result.multiply(n.multiply(n.subtract(bd1)));//實(shí)現(xiàn)result*(n*(n-1)) 
            n = n.subtract(bd2);//n-2后繼續(xù) 
        } 
        return result; 
    }
 
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末蝠咆,一起剝皮案震驚了整個(gè)濱河市踊东,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌刚操,老刑警劉巖闸翅,帶你破解...
    沈念sama閱讀 212,542評(píng)論 6 493
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異菊霜,居然都是意外死亡坚冀,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,596評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門鉴逞,熙熙樓的掌柜王于貴愁眉苦臉地迎上來记某,“玉大人司训,你說我怎么就攤上這事∫耗希” “怎么了壳猜?”我有些...
    開封第一講書人閱讀 158,021評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)贺拣。 經(jīng)常有香客問我蓖谢,道長(zhǎng),這世上最難降的妖魔是什么譬涡? 我笑而不...
    開封第一講書人閱讀 56,682評(píng)論 1 284
  • 正文 為了忘掉前任闪幽,我火速辦了婚禮,結(jié)果婚禮上涡匀,老公的妹妹穿的比我還像新娘盯腌。我一直安慰自己,他們只是感情好陨瘩,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,792評(píng)論 6 386
  • 文/花漫 我一把揭開白布腕够。 她就那樣靜靜地躺著,像睡著了一般舌劳。 火紅的嫁衣襯著肌膚如雪帚湘。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,985評(píng)論 1 291
  • 那天甚淡,我揣著相機(jī)與錄音大诸,去河邊找鬼。 笑死贯卦,一個(gè)胖子當(dāng)著我的面吹牛资柔,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播撵割,決...
    沈念sama閱讀 39,107評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開眼贿堰,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了啡彬?” 一聲冷哼從身側(cè)響起羹与,我...
    開封第一講書人閱讀 37,845評(píng)論 0 268
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎庶灿,沒想到半個(gè)月后注簿,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,299評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡跳仿,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,612評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了捐晶。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片菲语。...
    茶點(diǎn)故事閱讀 38,747評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡妄辩,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出山上,到底是詐尸還是另有隱情眼耀,我是刑警寧澤,帶...
    沈念sama閱讀 34,441評(píng)論 4 333
  • 正文 年R本政府宣布佩憾,位于F島的核電站哮伟,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏妄帘。R本人自食惡果不足惜楞黄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,072評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望抡驼。 院中可真熱鬧鬼廓,春花似錦、人聲如沸致盟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,828評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)馏锡。三九已至雷蹂,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杯道,已是汗流浹背匪煌。 一陣腳步聲響...
    開封第一講書人閱讀 32,069評(píng)論 1 267
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蕉饼,地道東北人虐杯。 一個(gè)月前我還...
    沈念sama閱讀 46,545評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像昧港,于是被迫代替她去往敵國(guó)和親擎椰。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,658評(píng)論 2 350

推薦閱讀更多精彩內(nèi)容

  • 一個(gè)人的時(shí)候總是顯得那么落寞 一個(gè)人的時(shí)候也容易傷感 一個(gè)人的時(shí)候容易想要放棄這個(gè)世界 一個(gè)人的時(shí)候 尤其是二十歲...
    火星小喵閱讀 177評(píng)論 0 1
  • 安澈_y閱讀 604評(píng)論 0 1
  • 有的時(shí)候真的搞不懂為什么孩子會(huì)喜歡光頭強(qiáng)這樣的動(dòng)畫片创肥,一個(gè)伐木工人的造型(制作方把人物設(shè)計(jì)的這么丑达舒,是為了貼近人物...
    奇行怪撰閱讀 789評(píng)論 0 1
  • 第三章約會(huì)寶典 葉舒敏將背包重新放在吧臺(tái)上巩搏,好吧…… “噢,好笑趾代」岬祝”她邊說邊咧開嘴,呵呵笑出聲撒强。 余小寶側(cè)了側(cè)身子...
    留住這般閱讀 223評(píng)論 1 0