国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java遞歸算法

這篇具有很好參考價值的文章主要介紹了Java遞歸算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

程序調(diào)用自身的編程技巧稱為遞歸(recursion),它做為一種算法在程序設(shè)計語言中廣泛應(yīng)用。Java支持遞歸,在 Java 編程中,遞歸是允許方法調(diào)用自身調(diào)用的屬性。調(diào)用自身的方法稱為是遞歸的。

一個物理世界的實例是放置兩個彼此面對的平行反射鏡。它們之間的任何對象都將被遞歸地反射。

遞歸如何工作?

Java遞歸算法,面向?qū)ο?java,算法,開發(fā)語言

Java遞歸的工作流程圖

在上面的示例中,我們從main方法內(nèi)部調(diào)用了recurse()方法。 ?

在recurse()方法內(nèi)部,我們再次調(diào)用相同的recurse方法。 這是一個遞歸調(diào)用。

為了停止遞歸調(diào)用,我們需要在方法內(nèi)部提供一些條件。否則,該方法將被無限調(diào)用。

因此,我們使用if...else..或類似方法)終止方法內(nèi)部的遞歸調(diào)用。

示例:使用遞歸的階乘

class Factorial {

    static int factorial( int n ) {
        if (n != 0)  // 終止條件
            return n * factorial(n-1); //遞歸調(diào)用
        else
            return 1;
    }

    public static void main(String[] args) {
        int number = 4, result;
        result = factorial(number);
        System.out.println(number + " 的階乘= " + result);
    }
}

輸出

4?的階乘=?24

在上面的示例中,我們有一個名為factorial()的方法。 從main()方法調(diào)用factorial()。 用傳遞的數(shù)字變量作為參數(shù)。

在這里,請注意以下語句:

return n * factorial(n-1);

factorial()方法正在調(diào)用自身。 最初,n的值在factorial()內(nèi)部為4。 在下一個遞歸調(diào)用期間,將3傳遞給factorial()方法。 此過程一直持續(xù)到n等于0。

當(dāng)n等于0時,if語句返回false,因此返回1。最后,將累積的結(jié)果傳遞給main()方法。

階乘程序的工作流程

下圖將使您更好地了解如何使用遞歸執(zhí)行階乘程序。

Java遞歸算法,面向?qū)ο?java,算法,開發(fā)語言

使用遞歸的階乘程序

遞歸的優(yōu)缺點

進行遞歸調(diào)用時,將在堆棧上分配新的變量存儲位置。隨著每個遞歸調(diào)用的返回,舊的變量和參數(shù)將從堆棧中刪除。因此,遞歸通常使用更多的內(nèi)存,并且通常很慢。

另一方面,遞歸解決方案要簡單得多,并且花費更少的時間來編寫,調(diào)試和維護。

java中方法如何遞歸調(diào)用

方法遞歸是指在方法中調(diào)用自身的過程。

在Java中,可以通過以下步驟實現(xiàn)方法遞歸調(diào)用:

  • 定義一個方法,并確保該方法可以接受參數(shù)。
  • 在方法內(nèi)部使用條件語句(if/else)或循環(huán)語句(while/for)來控制方法是否繼續(xù)遞歸調(diào)用自身。
  • 在條件語句或循環(huán)語句內(nèi)部,調(diào)用該方法并傳入新的參數(shù)。這樣,方法就會重新執(zhí)行,并且可能再次遞歸調(diào)用自身。
  • 當(dāng)條件不再滿足時,遞歸過程就會停止,并將結(jié)果返回給調(diào)用者。

以下是一個簡單的例子,展示了如何使用遞歸來計算階乘:

public class RecursionExample {
    public static int factorial(int n) {
        if (n == 1) //遞歸終止條件
            return 1;
        else
            return n * factorial(n-1); //遞歸調(diào)用
    }

    public static void main(String[] args) {
        int num = 5;
        int result = factorial(num);
        System.out.println("Factorial of " + num + " is " + result);
    }
}

在上面的示例中,factorial方法使用遞歸計算給定數(shù)字的階乘。當(dāng)n等于1時,遞歸終止。否則,它會調(diào)用自身并將n-1作為參數(shù)傳遞。在每個遞歸調(diào)用中,n的值都會減少,直到遞歸終止。最終,將計算出階乘的值,并將其返回給調(diào)用者。

案例:使用遞歸調(diào)用打印十進制整數(shù)對應(yīng)的二進制碼

以下是JAVA代碼實現(xiàn):

public class DecimalToBinary {
   public static void main(String[] args) {
      int decimal = 15;
      System.out.print("二進制數(shù)為:");
      decimalToBinary(decimal);
   }

   public static void decimalToBinary(int decimal) {
      if (decimal > 0) {
         decimalToBinary(decimal / 2);
         System.out.print(decimal % 2);
      }
   }
}

輸出結(jié)果為:

二進制數(shù)為:1111

說明:文章來源地址http://www.zghlxwxcb.cn/news/detail-612183.html

  • 該代碼分為兩部分:主函數(shù)和遞歸函數(shù)。
  • 主函數(shù)中定義了一個十進制整數(shù)變量 decimal,并調(diào)用了遞歸函數(shù) decimalToBinary(),并將 decimal 作為參數(shù)傳遞給該函數(shù)。
  • 遞歸函數(shù) decimalToBinary() 實現(xiàn)了將十進制整數(shù)轉(zhuǎn)換成二進制數(shù)的功能。
  • 遞歸函數(shù)中如果傳入的十進制整數(shù)大于 0,則遞歸調(diào)用自身并將傳入?yún)?shù)除以 2,以實現(xiàn)對二進制數(shù)的分解。
  • 最后在每次遞歸調(diào)用結(jié)束時,輸出 傳入?yún)?shù)對 2 取余數(shù)的結(jié)果,以實現(xiàn)對二進制數(shù)的生成。

到了這里,關(guān)于Java遞歸算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包