Java之遞歸求階層

2021-01-08 彼岸end

各位小夥伴們大家好,在之前的文章中小編介紹了Java之使用遞歸計算1-n之間的和,這次小編要介紹的是,用遞歸求階乘。

階乘:所有小於及等於該數的正整數的積

n的階乘:n!=n*(n-1)*……*3*2*1

分析:其實這與累和類似,之不過換成了乘法運算,推理得出:n!=n*(n-1)!

練習:使用遞歸計算階乘,代碼如下:

public class Demo03Recurison {

public static void main(String args[]) {

int s=sum(5);

System.out.println(s);

}

/*定義一個計算階乘的方法

5的階乘:5!=5*(5-1)*(5-2)*……*(5-4)

遞歸結束的條件:獲取到1的時候結束

遞歸的目的:獲取下一個被乘的數字(n-1)*/

private static int sum(int n) {

//獲取到1的時候結束

if(n==1) {

return 1;

}

//獲取下一個被乘的數字(n-1)

return n*sum(n-1);

}

}

關於用遞歸計算階乘,其實遞歸的主體不變,可是遞歸的參數會發生變化,一開始是5,然後是4,最後會變成1,其實原理和遞歸求和差不多,這個代碼也只是就之前的代碼改變了一下符號。小編就先說到這裡,希望這篇文章可以幫到大家,也歡迎各位小夥伴補充和糾錯。

圖片來自網絡,如有侵權,請聯繫作者刪除

相關焦點

  • Java常見內存溢出異常分析
    at java.util.Arrays.copyof(Arrays.java:3181)   堆內存溢出的時候,虛擬機會拋出java.lang.OutOfMemoryError:java heap space,出現此種情況的時候,我們需要根據內存溢出的時候產生的dump文件來具體分析(需要增加-XX:+HeapDumpOnOutOfMemoryErrorjvm啟動參數)。
  • 如何使用java語言求一個正整數的平方根?(不使用庫函數)
    今天的這篇文章是我在刷算法題的時候遇到的,最簡單的方法是直接調用java裡面的Sqrt函數,不過有時候題目中會要求我們不能使用庫函數,所以在這裡我們自己定義Sqrt方法。最常見的思路有兩種,第一種是二分法,第二種是牛頓的微積分思想。
  • 高斯求和如何用遞歸實現,Python詳解遞歸那些事,看這1篇足夠!
    前段時間,有小夥伴留言,想了解一些有關Python遞歸函數的知識。最近,小編也惡補了一些這方面的內容。說實話,對於遞歸的認識過程,確實能讓我們從中探索出一些很有意思的內容。今天,我們來一探究竟。01什麼是遞歸?
  • Java面向對象之final、abstract抽象、和變量生命周期
    Java面向對象之final、abstract抽象、final修飾符final只要滿足以下條件就可以考慮把一個類設計成final類:在設計之初就考慮不進入繼承體系的類。出於安全考慮,類的實現細節不允許被拓展和修改。比如:基本數據類型的包裝類就是一個典型的例子。該類不會再被拓展。
  • 數據結構java面試題及答案
    解決數組問題的關鍵是,你要對數組這種數據結構有一個深刻的認識,同時還要了解基本的程序流程如循環、遞歸以及基本的操作符。下面是一些經常問到和數組相關的面試題,你可以拿來練習:1、在一個給定的從1到100的整型數組中,如何快速找到缺失的數字?2、如何找到一個給定的整型數組中的重複數字?
  • 用經典案例來幫助初學者解析Java的「多態」
    形狀不同,當然求面積和求周長的方法內的實現邏輯也不同啦!若需要使用子類的或是實現類的構造方法為某屬性傳值,那麼構造方法要具備的,具體細節不是這篇文章主題要闡述的,就不多言。3.實現接口Shape.java的實現類之一 Rectangle.java 即矩形類:如上,Rectangle.java類實現了接口Shape.java中的若干抽象方法,當然,若Shape.java是父類或抽象類的話,Rectangle.java須重寫父類的getArea()方法、getPer(
  • 如何優雅地使用javascript遞歸畫一棵結構樹
    本文轉載自【微信公眾號:趣談前端,ID:beautifulFront】經微信公眾號授權轉載,如需轉載與原文作者聯繫遞歸和尾遞歸簡單的說,遞歸就是函數自己調用自己,它作為一種算法在程序設計語言中廣泛應用。其核心思想是把一個大型複雜的問題層層轉化為一個與原問題相似的規模較小的問題來求解。一般來說,遞歸需要有邊界條件、遞歸前進階段和遞歸返回階段。
  • aio-enhance v1.0.2 發布,Java AIO 內核增強類庫
    優化:將異步回調事件的遞歸計數器由 AtomicInteger 類型調整為 int 類型。 優化:簡化 Selector 的處理邏輯。 優化:簡化 SelectionKey.interestOps 的處理邏輯四、集成步驟一:依賴引入增強包:aio-enhance.jar。
  • Java之File類的構造方法
    Java之File類的簡單介紹,File類的靜態成員變量,這次小編要介紹的是File類的構造方法args) {//file類構造方法1show01();}private static void show01() {File f1=new File("c:\\Users\\java
  • 如何用java判斷一個數是不是質數?
    哈嘍大家好,這是java小白成長記!昨天分享了怎麼判斷一個數是不是迴文數,目的是為了鞏固一下if選擇語句和求餘數運算符,今天分享一下怎麼判斷一個數是不是質數,可以鞏固for循環、if選擇語句、還有沒怎麼使用過的基本數據類型Boolean。
  • Java之Random類的簡單介紹
    第一步,導包:import java.util.Random第二步,創建:Random a=new Random();小括號是可以留空的第三步,使用:如果要獲取一個隨機數int數字(範圍是int所有範圍,有正負兩種):int num=a.nextInt();為了方便大家的理解,小編就先粘幾行代碼,是一個比較簡單的猜數字小遊戲,代碼如下:
  • C語言編程實例:這麼簡單的遞歸別說你不會!
    但是我們如何利用遞歸呢?我可以從上面這個問題得知,遞歸函數的邊界條件為:當N變成1時,所以我們可以結合以上兩點得出遞歸函數的大概模型。自身調用自身利用遞歸函數自身調用自身的這一特點,我們可以設計一個函數,這個函數是我們所要求階乘的數N,並且它的返回值為當前N的值乘上(N-1)的階乘的值,當N減少到1是,處罰邊界條件開始返回,當它返回到第一級函數時,我們用printf()函數來輸出N的階乘!N。
  • java之數組作為方法參數的使用
    各位小夥伴們大家好,這次小編要介紹的是java作為方法參數,返回值的使用。首先,小編要介紹的是java作為方法參數的使用。關於java當中,數組作為方法參數的使用,小編就先說到這裡,其實和之前講的方法的調用差不多,只是調用的對象變成了數組,同時也需要用到數組的遍歷,最後,希望這篇文章可以幫到大家,也歡迎各位小夥伴補充和糾錯。
  • 跟我學java編程—深入理解for語句的嵌套循環
    示例1:用「*」輸出一個菱形圖案,圖案如下: 在D盤Java目錄下,新建「ForSample1.java」文件。用記事本打開「ForSample1.java」文件,輸入以下代碼:代碼結構分析程序功能主要是演示for嵌套循環的使用方法。
  • 跟我學java編程—認識java的整數類型
    整型有正整數和負整數之分,在Java語言中,規定整型的最高位為符號位,最高位為「0」表示正數,最高位為「1」表示負數,其它位表示數值。因此整型類型的數據能夠表示的最小值為:-2n-1 —2n-1-1(n為該類型所佔存儲空間的二進位位數)。
  • 詳解Java表達式與運算符
    通過本課的學習你將掌握運用表達式和運算符完成變量賦值、條件判斷、數學運算、邏輯運算等功能操作】在講述課程內容之前,先看一個求圓面積的問題。求圓面積的公式為;其中S為圓面積,π為圓周率,r為半徑。在java語言中,定義常量的語法如下:final 數據類型 常量名稱 = 值;其中,final是Java關鍵字,數據類型可以是Java語言支持的任何數據類型。
  • 跟我學java編程—認識java語言的字符類型
    用記事本打開「CharSample.java」文件,輸入以下代碼:編譯「CharSample.java」文件,在命令行窗口輸入「javac CharSample.java」並執行命令,編譯通過後,在命令行窗口輸入「java CharSample」運行Java程序,命令行窗口顯示如下信息:
  • 「通俗易懂的文字」+「經典案例」讓你順利入門「遞歸算法」
    遞歸是非常常見的一種算法,非常經典,可以解決非常多的問題。但我估計雖然大部分人知道遞歸,也能看得懂遞歸,但在實際運用中,很容易被遞歸給搞暈(數據,變量,函數等來回的出棧入棧)。今天寫篇文章分享下,或許,能夠給你帶來一些幫助。
  • 開發崗位這麼多,為什麼選Java?你學Java了嗎-開課吧
    提到C++語言,很多人發現在使用過程中最容易出現的錯誤就是內存管理,而java有自動垃圾回收器,不用擔心內存。時不等人,抓緊時間開始學習之旅吧。學習沒有捷徑,希望大家都能少走一些彎路,學有所成!Java語言相關內容推薦:
  • Java程式設計師必備基礎:Java代碼是怎麼運行的?
    java源文件編譯為class字節碼 類加載器把字節碼加載到虛擬機的方法區。但是java是一門面向對象的高級語言,它不僅語法非常複雜,抽象程度也非常高,並不能直接運行在計算機硬體機器上。 Java虛擬機(Java Virtual Machine 簡稱JVM)是運行所有Java程序的抽象計算機,是Java語言的運行環境。