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

專(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ù)文檔推薦 >>
主站蜘蛛池模板: 欧美日韩不卡在线 | 日韩免费观看的一级毛片 | 国产区精品福利在线观看精品 | 色视频免费观看高清完整 | 欧美日韩三级在线观看 | 黄色软件合集 | 日本xxwwwxxxx18| 欧美色图亚洲图片 | 午夜视频十八嗯嗯啊免费 | 久久精品观看影院2828 | 一本久久综合亚洲鲁鲁五月天 | 一个人看的www播放视频 | 欧美日韩成人高清在线播放 | 日韩视频高清免费看 | 直接观看黄网站免费视频 | 影音先锋国产精品 | 欧美性高清video | 美国大黄一片免费看 | 日本aⅴ永久免费网站www | 欧美在线视频一区二区三区 | 欧日韩一区二区三区 | 国产片一区二区三区 | 成人在线视频免费 | 黄篇免费看 | 黄色影视 | 天天色综合天天 | 高跟鞋性xxxxhd | 亚洲狠狠97婷婷综合久久久久 | 国产在线高清视频 | 日本人欧美xx | a在线观看欧美在线观看 | 国产91在线视频 | 九九免费观看全部免费视频 | 国产精品高清一区二区三区不卡 | 成人涩涩屋福利视频 | 2020久久国产最新免费观看 | 一级全黄视频 | 免费在线欧美 | 新午夜影院 | 成年大片免费播放视频人 | 一区二区三区亚洲视频 |