用java計算一個數的階乘原來這麼簡單!

2021-01-08 Java小白成長記

哈嘍大家好,這裡是Java小白成長記!

昨天給大家分享了java中的for循環,用for循環計算一千以內所以整數的和,不知大家學得怎麼樣了?

for循環是一個很強大的知識點,我們會經常使用,所以今天再講一個與for循環有關的代碼,那就是計算一個數的階乘。

階乘想必大家都知道,一個數的階乘就等於這個數乘所有小於它的正整數,公式也就是:n!=1x2x3x……x(n-1)xn。雖然說這是一個很簡單的知識,但是我們還是用Java來試著編寫一下代碼,鍛鍊一下我們的編程思維。

我們就用5的階乘來嘗試,答案是5*4*3*2*1=120。

編寫之前,先構思一下編寫思路:

計算5的階乘,我們先定義一個變量來存放最後的答案,初始值定為1,比如int sum =1;

可以在for循環裡定義一個變量為5,比如int i=5;然後用i去乘sum,所以sum的初始值一定不能為0,否則就沒意義了。

然後讓i每次減1,也就是i--;再用i乘sum,直到i的值等於1的時候,結束for循環,然後輸出sum的值。

代碼如下:

按照剛才的思考編寫代碼,完全沒有問題,還是要注意千萬不要把sum的初始值定義為0,0乘任何數結果都是0,那樣就沒意義了,然後進入循環,每個i都去乘sum,直到i變為1的時候,我們就把所有小於等於5的正整數算進去了,最後輸出sum就行了。

結果如圖:

當然代碼不是唯一的,我是讓i的初始值為5,大家也可以讓i的初始值為1,條件表達式就變成了i<=5;更新表達式就成了i++;

如圖:

兩種寫法都可以,結果是一樣的。我們還能把i>=1寫成i>0,把i<=5寫成i<6。所以編寫方式有很多,重要的是我們的思路一定要清晰。

我們再稍微升級一下代碼,這只能計算5的階乘,我們改成可以計算任何正整數階乘的,怎麼改?

對,也就是前面講的在DOS命令窗口中輸入數據,在代碼中加入相應的代碼:

整體並沒太多改動,只是加上相應的代碼,然後把5改成定義的變量,我這裡是n,最後輸出的時候把n寫到雙引號外面,並且用加號和後面連接,這樣我們就可以計算其他正整數的階乘了!

今天就分享到這裡了,大家自己嘗試做一下,明天繼續for循環的分享,明天見。

相關焦點

  • LabVIEW編程實例:計算階乘,學習for循環+移位寄存器+遞歸調用
    階乘定義非負整數n的階乘簡記為n!,在數學上定義為所有小於等於該數的正整數的乘積,並且定義0的階乘等於1,用公式表示為:n!=1×2×3×……×(n-1)×n對於n!也可以用遞歸方式定義為如下形式:n!=(n-1)!×n,且0!
  • Python編程案例:計算自然數n的階乘
    阿萌又接到一個新的編程任務,要求用Python編寫一個計算自然數n階乘的程序,用於學生利用計算機來計算n的階乘。阿萌梳理了一下編程要求,他認為程序需要實現下面這些功能:程序啟動後,程序在Shell窗口輸出提示信息「請輸入一個自然數,輸入quit可退出程序:」,學生輸入一個自然數,程序計算自然數的階乘,並將計算結果輸出到Shell窗口。程序再次輸出「請輸入一個自然數:」,等待學生的下次輸入。
  • 如何用java判斷一個數是不是質數?
    哈嘍大家好,這是java小白成長記!昨天分享了怎麼判斷一個數是不是迴文數,目的是為了鞏固一下if選擇語句和求餘數運算符,今天分享一下怎麼判斷一個數是不是質數,可以鞏固for循環、if選擇語句、還有沒怎麼使用過的基本數據類型Boolean。
  • 淺談Java中的幾種隨機數
    眾所周知,隨機數是任何一種程式語言最基本的特徵之一。而生成隨機數的基本方式也是相同的:產生一個0到1之間的隨機數。看似簡單,但有時我們也會忽略了一些有趣的功能。我們從書本上學到什麼?最明顯的,也是直觀的方式,在Java中生成隨機數隻要簡單的調用:java.lang.Math.random() 在所有其他語言中,生成隨機數就像是使用Math工具類,如abs, pow, floor, sqrt和其他數學函數。大多數人通過書籍、教程和課程來了解這個類。一個簡單的例子:從0.0到1.0之間可以生成一個雙精度浮點數。
  • 為什麼規定0的階乘為1?
    階乘(factorial)是基斯頓·卡曼(ChristianKramp,1760~1826)於1808年發明的運算符號。
  • n的階乘後面有多少個零?
    階乘是基斯頓·卡曼(Christian Kramp,1760~1826)於 1808 年發明的運算符號。
  • 怎麼判斷一個數是不是迴文數?用java幫助你!
    昨天分享了怎麼來判斷一個數字的奇偶性,其中用到了if選擇語句和求餘運算,雖然都不是很難的知識點,但是也不可能分享一次就不管了,所以今天繼續分享一個和它倆有關的代碼:如何判斷一個五位數是不是迴文數。首先了解一下迴文數是什麼:迴文數是指一個數字從前往後讀和從後往前讀結果是一樣的。比如:2、66、151、2332、85658等等,只要正著念和反著念是一樣的,都是迴文數。
  • Java之Random類的簡單介紹
    第一步,導包:import java.util.Random第二步,創建:Random a=new Random();小括號是可以留空的第三步,使用:如果要獲取一個隨機數int數字(範圍是int所有範圍,有正負兩種):int num=a.nextInt();為了方便大家的理解,小編就先粘幾行代碼,是一個比較簡單的猜數字小遊戲,代碼如下:
  • 在數學中,零的階乘為什麼等於1?
    對階乘進行解析延拓後,就能得到著名的伽馬函數,我們根據伽馬函數,就可以得到"0!=1"。階乘階乘是指所有小於以及等於某個數的正整數之積,記為:n!=1×2×3×……×n;在排列組合中我們經常遇到階乘運算,比如5個人按照順序進行排隊的話,就有「5!=120種」排列方法。按照階乘的定義,我們很容易得出這麼一個結論:(n+1)!=(n+1)*n!,其中n≥1且為整數;至於n=0的情況,超出了階乘的定義範圍,但是我們為了讓上面式子繼續成立,我們強行把n=0帶進去有:(0+1)!
  • 為什麼0的階乘等於1
    為什麼0的階乘等於1?看了很多大神的論證過程,邏輯嚴謹,忠於學術,又勤奮。但感覺都沒啥說服力啊,反正我也看不懂。。。。。。
  • n很大時n的階乘如何計算?斯特靈公式幫你解決一切
    斯特靈公式(Stirling's formula)是一條用來取n階乘近似值的數學公式。一般來說,當n很大的時候,n階乘的計算量十分大,所以斯特靈公式十分好用;而且,即使在n很小的時候,斯特靈公式的取值已經十分準確。
  • Java 生成隨機數的 5 種方式,你知道幾種?
    Math.random() 靜態方法 產生的隨機數是 0 - 1 之間的一個 ,即 。 當第一次調用 方法時,自動創建了一個偽隨機數生成器,實際上用的是 。當接下來繼續調用 方法時,就會使用這個新的偽隨機數生成器。
  • C語言編程實例:這麼簡單的遞歸別說你不會!
    前言各位粉絲,實在是不好意思啦,從上一篇文章的發布距今已經有一個多星期了,不是不想發,而是實在太忙了,一直忙著跟舍友開發購物網站,一人擔起技術的「重擔」。雖然隔了好幾天沒有發布新的文章,但是陸陸續續還是有一些粉絲私信拿源碼的,所以小編今天就抽空給大帶來一篇簡單的C教程文章——求數N的階乘。
  • java中的字節進位計算和(&)位運算符
    但是在java中我們大部分都是用int、double、float、String等我怎麼知道int a = 1;二進位等於多少?這個時候就要計算啦。1/2 在我們看來等於0.5,然而在計算機的二進位看來就是1/2餘1,那麼為啥會餘1呢?
  • Java之遞歸求階層
    各位小夥伴們大家好,在之前的文章中小編介紹了Java之使用遞歸計算1-n之間的和,這次小編要介紹的是,用遞歸求階乘。階乘:所有小於及等於該數的正整數的積n的階乘:n!練習:使用遞歸計算階乘,代碼如下:public class Demo03Recurison {public static void main(String args[]) {int s=sum(5);System.out.println(s);}/*定義一個計算階乘的方法5的階乘:5!
  • ...自主招生 階乘 藻類 exp sinh cosh 招辦 雪晶 染色劑-長三角...
    用四個0來算24點,你能算出來嗎?雪是什麼顏色的?3個蘋果怎麼分給5個猴子?昨天,南京大學舉行自主招生面試,來自全國各地的300多名考生挨個「過堂」。這些聽上去又難又刁的題目的確把考生給問住了!記者在現場看到,光是那道用四個0算24點就幾乎沒考生答出來。
  • 詳解Java表達式與運算符
    假設用程序來計算圓的面積,S、π、r均為變量,省略的乘號為運算符,r的2次方可以描述為r*r。則上面的公式即為求圓面積的表達式。第三小節 Java運算符運算符用於連接表達式的操作數,並對操作數執行運算。例如,表達式num1+num2,其操作數是num1和num2,運算符是」+」。在java語言中,運算符可分為5種類型:算術運算符、賦值運算符、關係運算符、邏輯運算符、位運算符。
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    程式語言排行榜目前很多軟體都是用Java寫的,新出的系統和函數庫為了市場,也會儘量和Java兼容或者提供Java其他程式語言與Java相比,Java語法相對簡單,並且是很多計算機語言的基礎。提到C++語言,很多人發現在使用過程中最容易出現的錯誤就是內存管理,而java有自動垃圾回收器,不用擔心內存。
  • 大神詳解,這麼詳細的Java設計模式不收藏可惜了
    現在寫代碼雖說不會特意明確在用哪種設計模式,但潛移默化的寫出來公認的優秀實踐代碼,畢竟看的比較清爽。為什麼再看一遍設計模式,主要有幾個原因:***,很多優秀的源碼基本都使用了設計模式,明確設計模式能夠更好的看源碼。第二,很多中間件設計理念也是基於設計模式的,還有其他的語言,都有自己的設計優秀實踐。對於我來說,設計模式始於java,不止於java。第三,有了這種規範,可以更好的和他人溝通,言簡意賅。
  • java float double精度為什麼會丟失?淺談java的浮點數精度問題
    問題大概情況可以通過如下代碼理解:得到的結果如下:f=2.0015E7d=2.0015E7d2=2.0014999E7從輸出結果可以看出double 可以正確的表示20014999 ,而float 沒有辦法表示20014999 ,得到的只是一個近似值。這樣的結果很讓人訝異。