黄色网址大全免费-黄色网址你懂得-黄色网址你懂的-黄色网址有那些-免费超爽视频-免费大片黄国产在线观看

專(zhuān)注Java教育14年 全國(guó)咨詢(xún)/投訴熱線(xiàn):400-8080-105
動(dòng)力節(jié)點(diǎn)LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁(yè) hot資訊 遞歸實(shí)現(xiàn)斐波那契數(shù)列

遞歸實(shí)現(xiàn)斐波那契數(shù)列

更新時(shí)間:2022-08-05 09:56:55 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽827次

斐波那契數(shù)列是一系列數(shù)字,其中每個(gè)數(shù)字(前兩個(gè)數(shù)字除外)都是前兩個(gè)數(shù)字的總和。斐波那契數(shù)列通常從 0、1 開(kāi)始。我們可以在 Java 中使用迭代或遞歸創(chuàng)建斐波那契數(shù)列。在本文中,我們將介紹在 Java遞歸方法中的斐波那契數(shù)列。

介紹

在斐波那契數(shù)列中,每個(gè)數(shù)字(前兩個(gè)數(shù)字除外)都是前兩個(gè)數(shù)字的總和。斐波那契數(shù)列的數(shù)學(xué)公式是:

F(n) = F(n - 1) + F(n - 2)F ( n )=F ( n-1 )+F ( n-2 )其中,F(xiàn)(n)表示n^{第}n時(shí)間_斐波那契數(shù)。

在 Java 中,我們可以使用遞歸和記憶等不同的技術(shù)來(lái)創(chuàng)建斐波那契數(shù)列。讓我們看幾個(gè)例子來(lái)了解我們?nèi)绾蝿?chuàng)建斐波那契數(shù)列。

示例 1

在 Java 中使用遞歸的斐波那契數(shù)列 要在 Java 中使用遞歸計(jì)算斐波那契數(shù)列,我們需要?jiǎng)?chuàng)建一個(gè)函數(shù)以便執(zhí)行遞歸。這個(gè)函數(shù)接受一個(gè)整數(shù)輸入。該函數(shù)檢查輸入數(shù)字是0、1還是2,如果輸入是三個(gè)數(shù)字中的任何一個(gè),它分別返回0、1或1 。如果輸入大于2,該函數(shù)會(huì)遞歸調(diào)用自身以獲取先前的值,直到輸入變量的值變得小于或等于2。因此,如果函數(shù)接收一個(gè)整數(shù)n作為輸入,它將返回n^th^斐波那契數(shù)。要打印斐波那契數(shù)列,我們將調(diào)用此函數(shù)來(lái)計(jì)算每個(gè)斐波那契數(shù)。

public class FibonacciCalc {
  public static int fibRecursion(int count) {
    if (count == 0) {
      return 0;
    }
    if (count == 1 || count == 2) {
      return 1;
    }
    return fibRecursion(count - 1) + fibRecursion(count - 2);
  }
  public static void main(String args[]) {
    int fib_len = 9;
    System.out.print("Fibonacci Series of " + fib_len + " numbers is: \n");
    for (int i = 0; i < fib_len; i++) {
      System.out.print(fibRecursion(i) + " ");
    }
  }
}

程序的輸出:

Fibonacci Series of 9 numbers is:
0 1 1 2 3 5 8 13 21

在上面的示例中,我們定義了一個(gè)遞歸函數(shù)fibRecursion來(lái)獲取第 n 個(gè)斐波那契數(shù)并重復(fù)調(diào)用它(對(duì)于i=0 到 i=8),以創(chuàng)建一個(gè)長(zhǎng)度為 9 的斐波那契數(shù)列。

時(shí)空復(fù)雜度

求解斐波那契數(shù)列的遞歸方法的時(shí)間復(fù)雜度為O(2^n)O ( 2n)即指數(shù)時(shí)間。如果我們考慮遞歸堆棧,遞歸方法的空間復(fù)雜度為O(n) 。

指數(shù)時(shí)間復(fù)雜度是極其低效的。使用遞歸方法計(jì)算長(zhǎng)度很大的斐波那契數(shù)列需要很長(zhǎng)時(shí)間。為了解決這個(gè)問(wèn)題,我們可以使用記憶技術(shù)來(lái)創(chuàng)建斐波那契數(shù)列。這種技術(shù)比遞歸方法快得多。

示例 2

Java 中的斐波那契數(shù)與記憶記憶 記憶是一種用于提高遞歸程序性能的編程技術(shù)。在這種技術(shù)中,先前計(jì)算的結(jié)果被存儲(chǔ)(緩存)并重復(fù)使用。在之前的方法中,我們分別計(jì)算每個(gè)斐波那契數(shù)。但是,在這種方法中,我們將使用之前的結(jié)果來(lái)計(jì)算當(dāng)前的斐波那契數(shù)。因此,如果我們計(jì)算了一個(gè)數(shù)字的斐波那契,我們可以重復(fù)使用它而無(wú)需再次進(jìn)行計(jì)算。

在之前的方法中,我們分別計(jì)算每個(gè)斐波那契數(shù),但在這種方法中,我們將使用之前的結(jié)果來(lái)計(jì)算當(dāng)前數(shù)字。

記憶化可以使用HashMaps來(lái)完成。

import java.util.HashMap;
import java.util.Map;
public class FibonacciCalc {
  static private Map < Integer, Integer > memoizeTable = new HashMap < > ();
  // Fibonacci with Memoization
  static public int fibMemoize(int n) {
    if (n == 0) {
      return 0;
    }
    if (n == 1) {
      return 1;
    }
    if (memoizeTable.containsKey(n)) {
      // getting value from the stored result(s)
      return memoizeTable.get(n);
    }
    int result = fibMemoize(n - 1) + fibMemoize(n - 2);
    // storing the result in cache
    memoizeTable.put(n, result);
    return result;
  }
  public static void main(String[] args) {
    //FibonacciCalc fibo = new FibonacciCalc();
    System.out.println("Fibonacci value for n = 6 --> " +
      fibMemoize(6));
  }
}

程序的輸出:

Fibonacci value for n = 6 --> 8

在上面的例子中,我們創(chuàng)建了一個(gè)函數(shù)fibMemoize,它使用 memoization 來(lái)計(jì)算斐波那契數(shù)。在這個(gè)函數(shù)中,我們首先檢查變量n 是 0 還是 1。如果n是0,我們返回 0 ,如果n是 1 ,我們返回1。如果n^{第}n時(shí)間_斐波那契數(shù)存儲(chǔ)在 hashmap 中,我們直接使用它的值來(lái)獲得所需的斐波那契數(shù)。如果沒(méi)有存儲(chǔ)n,我們通過(guò)調(diào)用前兩個(gè)斐波那契值的函數(shù)來(lái)計(jì)算斐波那契值,然后將這個(gè)值存儲(chǔ)到hashmap中,最后返回它來(lái)得到我們的答案。

時(shí)空復(fù)雜度

計(jì)算斐波那契數(shù)列的記憶方法的時(shí)間復(fù)雜度為O(n)。這種方法的空間復(fù)雜度也是O(n)。

以上就是關(guān)于“遞歸實(shí)現(xiàn)斐波那契數(shù)列”的介紹,大家如果想了解更多相關(guān)知識(shí),可以關(guān)注一下動(dòng)力節(jié)點(diǎn)的Java教程,里面有更豐富的知識(shí)等著大家去學(xué)習(xí),相信對(duì)大家一定會(huì)有所幫助的。

提交申請(qǐng)后,顧問(wèn)老師會(huì)電話(huà)與您溝通安排學(xué)習(xí)

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 久久久久久麻豆 | 亚洲天天更新 | 三级经典三级日本三级欧美 | 噜噜噜噜噜噜色 | 日本欧美人xxxxx在线观看 | 欧美亚洲综合另类成人 | 午夜免费视频网站 | 国产一级特黄aa大片软件 | 91精品国产品国语在线不卡 | 亚洲欧美日韩综合在线播放 | 在线欧美a | 天天干天天综合 | 91人前露出精品国产 | 国产精品久久二区三区色裕 | 国产旗袍丝袜在线观看视频 | 玖玖成人| 黄色一级国产 | 国产成人精品综合久久久 | 天天爽天天射 | 乱系列中文字幕在线视频 | 国产成人免费片在线视频观看 | 亚洲天堂久久新 | 一级毛片在线播放免费 | 97欧美| 欧美一级黄色录相 | 成人在免费观看视频国产 | 日韩激情视频在线观看 | 国内精品视频成人一区二区 | 日本黄色www | 91资源在线视频 | 欧美精彩视频在线观看 | 日韩成人在线网站 | 黑人极品videos精品欧美裸 | 欧美日韩网站 | 天天干女人 | 国产精品三级一区二区 | 一道本在线播放 | 在线精品欧美 | 欧美成人免费草草影院视频 | 日本天堂网在线观看 | 免费大黄 |