大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

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

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

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

斐波那契數(shù)列是一系列數(shù)字,其中每個(gè)數(shù)字(前兩個(gè)數(shù)字除外)都是前兩個(gè)數(shù)字的總和。斐波那契數(shù)列通常從 0、1 開始。我們可以在 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ù)來創(chuàng)建斐波那契數(shù)列。讓我們看幾個(gè)例子來了解我們?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ù)來計(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來獲取第 n 個(gè)斐波那契數(shù)并重復(fù)調(diào)用它(對于i=0 到 i=8),以創(chuàng)建一個(gè)長度為 9 的斐波那契數(shù)列。

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

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

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

示例 2

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

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

記憶化可以使用HashMaps來完成。

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 來計(jì)算斐波那契數(shù)。在這個(gè)函數(shù)中,我們首先檢查變量n 是 0 還是 1。如果n是0,我們返回 0 ,如果n是 1 ,我們返回1。如果n^{第}n時(shí)間_斐波那契數(shù)存儲(chǔ)在 hashmap 中,我們直接使用它的值來獲得所需的斐波那契數(shù)。如果沒有存儲(chǔ)n,我們通過調(diào)用前兩個(gè)斐波那契值的函數(shù)來計(jì)算斐波那契值,然后將這個(gè)值存儲(chǔ)到hashmap中,最后返回它來得到我們的答案。

時(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í),相信對大家一定會(huì)有所幫助的。

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

免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 特级毛片s级全部免费 | 曰本亚洲欧洲色a在线 | 成人做爰毛片免费视频 | 精产网红自拍在线 | 日韩一区二区三区免费视频 | 亚洲视频一二 | 国产综合一区二区 | 青草视频网址 | 伊人网站 | 色综合久久亚洲国产日韩 | 日日夜夜亚洲 | 99热免费 | 欧美日韩一区二区三在线 | 色无极欧美 | 在线视频免费国产成人 | 在线播放亚洲视频 | 大乳孕妇一级毛片 | 久爱午夜精品免费视频 | 亚州综合 | 色老头xxxwww作爱视频 | 一级成人黄色片 | 国产成人精品三级91在线影院 | 亚洲久草视频 | 亚洲视频免费观看 | 女人十八一级毛片 | 久草在线色站 | 中文字幕.com | 天天干夜夜操视频 | 国产精品日韩欧美一区二区三区 | 99热久久国产精品这里有6 | 欧美激情久久欧美激情 | 久久免费区一区二区三波多野 | 欧美一级成人免费大片 | 一区二区三区在线免费观看视频 | 中文字幕久久久久久精 | 中文字幕欧美日韩va免费视频 | 久青草网站 | 一区二区三区免费视频观看 | 九七影院97影院理论片 | 99精品视频观看 | 国产三级精品三级男人的天堂 |