Java 中的斐波那契系列:如何在 Java 中編寫和顯示斐波那契

已發表: 2020-07-29

斐波那契數列得名於意大利數學家萊昂納多·斐波那契。 早在 1202 年,他就在西歐用他的書 Liber Abaci 介紹了這個系列。印度數學界早在公元前 200 年就看到了斐波那契魔法的方式,Pingala 的作品就證明了這一點。 這種數字表示在編碼和計算領域也佔有特殊的位置。 在本解釋器結束時,您將了解如何使用 Java 編寫斐波那契數列。

整數序列以 0 和 1 開頭,後面的每個數字都是前面兩個數字的和,例如 0、1、1、2、3、5 等。 在 JavaScript 中有兩種主要的生成方式,即 (i) 使用迭代,即不使用遞歸,以及 (ii) 使用遞歸。 雖然迭代方法需要線性時間來完成任務,但您可以使用遞歸技術以指數方式獲得解決方案。 現在,讓我們一一深入研究這些方法的細節。

閱讀: Python vs. Javascript Throwdown:你應該更喜歡哪一個?

目錄

用 Java 編寫斐波那契數列

方法一:不遞歸

  • 循環

在這種情況下,您希望 Java 程序生成斐波那契數列的前 n 個數字。 下面詳細介紹了“for”循環迭代的工作原理。

首先,您初始化系列的前兩個數字。 然後,For 循環將兩個直接前任相加並打印該值。 此過程將一直持續到前 n 個數字已顯示。 由於程序在開始迭代之前已經發布了 0 和 1,因此 For 循環條件由 n-2 給出。

  • While 循環

它遵循類似於 For 循環方法的邏輯,但需要程序員在其應用中更加小心。 “while”循環的控制流語句在布爾條件下重複執行代碼。 只有當條件滿足或為真時,循環體才會被執行。 此外,更新表達式增加循環變量。 相反,如果條件評估為假,我們將退出 while 循環。

閱讀: Java 架構和組件解釋

讓我們觀察下面給出的 Java 代碼,以更好地理解 While 循環:

方法2:使用遞歸

當您使用遞歸在 Java 中編寫斐波那契數列時,函數會直接或間接調用自身。 它是一種基本的 JavaScript 編程技術,該函數被稱為遞歸函數。

遞歸算法可以幫助您輕鬆解決複雜問題。 假設您想使用遞歸打印斐波那契數列的前“n”個數字。 您將需要一個遞歸 Java 程序來生成所需的系列。 以下是這種實現的逐步解釋:

  • 用戶會給出輸入
  • For 循環將應用於循環,直到每次迭代調用返回 n 位置處的斐波那契數的函數。 讓它成為斐波那契數(int n)
  • 然後該函數將遞歸調用自身並添加前兩個斐波那契數

斐波那契數列的例子

斐波那契數列的一些現實實例包括花朵中的花瓣、松果、樹枝、貝殼螺旋以及自然界中的許多其他表示形式。 這個數學序列的黃金比例規則是宇宙最基本的特徵所固有的,例如我們的 DNA 分子和星系的螺旋。

上面描述的迭代和遞歸方法是斐波那契數列的遞歸關係的實現。 它由下式給出:F(n) = F(n-1) + F(n-2)。 當我們將種子值放入這個關係中時,我們得到:F(0) = 0 和 F(1) = 1。對於給定的數字 n,你將如何找到斐波那契數列中的第 n 個數字? 讓我們考慮不同輸入的場景。

  • 對於輸入 n=2,輸出將為 1
  • 對於輸入 n=9,結果將是 34

您可以在這些基礎上編寫一個返回 F(n) 的函數。 函數可以通過:int fib (int n) 給出。 當 n = 0 時,fib() 函數將返回 0。類似地,如果 n = 1,則 fib() 應返回 1。對於 n > 1,輸出應為 F(n-1) + F (n-2)。

fib() 函數的測試用例

對於一個簡短的序列,即。 [0, 1, 1, 2, 3, 5, 8,…,55] 和 fib(5),結果將是 5。因此,我們的目標是從 Fibonacci 序列數組中返回索引為 5 的元素. 讓我們看看這將如何使用迭代方法展開。

  • 函數fib(n){

讓數組 = [0,1];

for (讓 j = 2; j < n + 1; j ++) {

array.push(array[j-2] + array[j-1])

}

返回數組[n]

}

您可以注意到,在上面的代碼片段中,我們將數組變量分配給 [0,1] 而不是創建一個空數組。 循環從 j = 2 開始迭代並不斷添加數字,直到數組的長度為 n + 1。這樣,我們返回 n 索引處的數字。 因此,fib (4) 的輸出為 3,fib (5) 的輸出為 5,依此類推。

如果您在面試中被要求使用遞歸解決相同的問題,您可以使用以下基本案例。

  • 函數fib(n){

如果 (n > 2){

返回 n

}

返回 fib(n-1) + fib (n-2)

}

假設您使用參數 5 調用 fib()。在這裡,fib 函數將繼續創建樹的更多分支,直到達到基本情況(n 的值小於 2),之後它將開始匯總返回每個分支的值。 僅當打印等於 5 的整數時,遞歸調用才會停止。

Java中斐波那契數列的優點

  • 使用簡單的 Javascript 程序,您可以執行斐波那契數列,輕鬆顯示特定數字或術語的數列
  • 遞歸在 Java 中提供了簡潔而富有表現力的代碼
  • 迭代算法在生產中提供了出色的解決方案,因為它們是有界的,可以保持代碼的健壯性。 相反,遞歸算法有時會導致堆棧溢出錯誤
  • 斐波那契搜索在排序數組中工作並且比二分搜索執行得更好,主要是當訪問速度取決於先前訪問的位置時
  • 熟悉斐波那契數列可以讓學生在開發需要各種前端和後端功能的現代應用程序的同時開發邏輯

查看: Java 項目創意

加起來

在本文中,我們試圖幫助您在 Java 中實現一個斐波那契數列,並了解不同方法背後的邏輯。 您可以使用遞歸或不使用遞歸(for 循環和 while 循環)來表示斐波那契數。 之後,我們刷新了這兩種方法背後的核心概念,並討論了它們的優勢。

有了所有這些信息,您可以更新您的算法知識並編寫更好的代碼。 如果您對數組、二叉樹、鍊錶等數據結構也有很好的了解,那將是最好的。使用上面的文章作為您修訂的起點並培養您的編程技能!

如果您有興趣了解有關 Java、全棧軟件開發的更多信息,請查看 upGrad 和 IIIT-B 的全棧軟件開發 PG 文憑,該文憑專為在職專業人士設計,提供 500 多個小時的嚴格培訓,9 個以上的項目和任務、IIIT-B 校友身份、實用的實踐頂點項目和頂級公司的工作協助。

踏上夢想的工作

升級和 IIIT-BANGALORE 的 PG 文憑在全棧開發中
現在申請