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

專注Java教育14年 全國(guó)咨詢/投訴熱線: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 來源:動(dòng)力節(jié)點(diǎn) 瀏覽780次

斐波那契數(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)用它(對(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è)問題,我們可以使用記憶技術(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ù)使用它而無(wú)需再次進(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í),相信對(duì)大家一定會(huì)有所幫助的。

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

  • 全國(guó)校區(qū) 2025-04-24 搶座中
  • 全國(guó)校區(qū) 2025-05-15 搶座中
  • 全國(guó)校區(qū) 2025-06-05 搶座中
  • 全國(guó)校區(qū) 2025-06-26 搶座中
免費(fèi)課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 高清欧美一区二区免费影视 | 91伦理| 美女被a到爽视频在线观看 美女被cao的视频免费看 | 四虎成人永久影院 | xxxxyoujizz护士| 欧美日韩高清在线 | 伊人狠狠丁香婷婷综合色 | 天天添天天射 | 久久久久久久亚洲精品 | 国产九九免费视频 | 国产精品美女www爽爽爽视频 | 99久久久国产精品免费牛牛四川 | 日本视频中文字幕一区二区 | 爱唯侦察1024入口地址 | 天天摸日日碰天天看免费 | 国产永久一区二区三区 | 在线观看日本人免费视频色 | 5g天天爽影院 | 亚洲国产视频在线 | 日韩欧美一区二区三区四区 | 91视频网址 | 羞羞视频网站在线观看 | 成人私拍福利视频在线 | 久久成人国产精品免费 | 伊人狼人视频 | 国产精品成人免费 | 中文字幕国产一区 | 三a大片| 成年免费网站 | 国产臀控福利视频在线 | 国产精品免费一区二区三区 | 在线欧美| 久久亚洲精品一区二区三区浴池 | 欧美精品亚洲精品日韩一区 | 久热中文字幕在线精品首页 | 亚洲成年网站 | 91九色最新地址 | 大学生一级毛片免费看真人 | 国产精品自拍亚洲 | 在线中文字幕视频 | 日本一级欧美一级中文 |