費波那契數列是由 F(0) = 0、F(1) = 1,以及對所有 n ≥ 2 的 F(n) = F(n−1) + F(n−2) 所定義的零起始索引整數清單,會產生 0、1、1、2、3、5、8、13、21、34、55、……,並無限延伸下去,每一項等於前兩項的和。無論是為了測試程式碼、課堂練習、遞迴示範,或產生大量參考資料,若要為任何實際用途尋找費波那契數列,最可靠的方法就是明確指定所需的項數,讓工具精確地執行遞迴運算。費波那契數列產生器接受 1 到 1,000 之間的整數項數,並回傳從 F(0) 開始到對應最終索引的每一個值,每一列都會標示其位置,因此零起始索引永遠不會產生混淆。由於遞迴是以精確的整數運算執行,即使數值超出一般的浮點數精度,輸出結果依然正確,而這種情況在數列中出現得比想像中早得多。

在此工具中「項數」的意義
有些讀者會搜尋以目標值、最終索引或列數來尋找費波那契數列的方法。費波那契數列產生器只使用單一輸入:項數,也就是您想要的列數,而非最後一列的索引。這個區別很重要,因為前兩列分別是 F(0) 和 F(1),所以最終索引永遠比項數少一。
請求一項時,只會回傳 F(0) = 0。請求十項時,會回傳 F(0) 到 F(9),而摘要面板永遠會同時回報產生的項數與最終索引,因此輸出的邊界絕對不會有疑問。部分教科書參考資料的顯示清單從 1, 1 開始,在將產生的輸出與印刷資料比對時可能造成混淆;本工具明確採用零起始索引,透過為每一列標示其索引,消除了這種慣例上的不一致。
產生帶索引的數列
- 在瀏覽器中開啟費波那契數列產生器。該小工具載入後會出現輸入欄位與空白輸出區,等待輸入項數。
- 在項數欄位中輸入介於 1 到 1,000 之間的整數。該數字代表您想要的列數,從 F(0) 開始。僅接受十進位純數字,不接受小數、正負號、科學記號或分隔符號。
- 觸發產生動作並稍候片刻。即使輸入為支援的上限 1,000 項,輸出仍在瀏覽器本機產生並快速呈現,不會將任何數值傳送到遠端伺服器。
- 閱讀數列上方的摘要面板。該面板會同時列出產生的項數與最終索引,因此您無需逐列捲動即可確認結果的邊界。
- 抽查代表性的索引值,特別是在開頭附近以及您關注的邊界附近。F(0) = 0、F(1) = 1、F(2) = 1、F(3) = 2,依此類推。每一列左側顯示索引,右側顯示十進位數值。
- 使用複製動作複製以換行分隔的精確清單,若剪貼簿權限被拒,則手動選取可見文字並透過瀏覽器複製。編輯項數會在處理新請求前先清除先前的結果,因此舊的數列不會在全新的未處理輸入下殘留在畫面上。
如何保持精確運算
遞迴在數學上很簡單,但 JavaScript 預設的 Number 型別僅能精確表示到 2⁵³ − 1 以下的整數,該上限稱為 Number.MAX_SAFE_INTEGER。費波那契數很快就會越過這個界界:F(79) 已經大於安全上限,從該點開始,一般的浮點數運算會開始進行四捨五入或產生近似值。費波那契數列產生器透過將每個值儲存為 BigInt(一種任意精度整數型別),並對每個要求的項執行一次加法,從而避免了這個問題。
舉例來說,F(5) = F(4) + F(3) = 3 + 2 = 5,在 BigInt 運算下,這與封閉式公式回傳的值相同,但不會引入浮點數的次方與平方根所可能造成的捨入雜訊。F(100) 是一個有 21 位數的數字,會被精確呈現為 354224848179261915075,而不是以科學記號或四捨五入的近似值表示。該演算法以 current = 0 與 next = 1 開始,附加目前的值,然後將該組數對替換為 (next, current + next),使下一次迭代的前一個 next 成為 current,其和成為新的 next。
本工具刻意不使用基於黃金比例的封閉式 Binet 公式。Binet 的浮點數實作可能會對較大的費波那契值進行四捨五入,因為該公式依賴無理數的次方與平方根,這兩者在有限的二進位運算中都不精確。相較之下,迭代式 BigInt 遞迴只要記憶體允許,就能精確保留每一位十進位數字。在以 BigInt 產生費波那契數列的指南中,有更深入的程式碼層面遞迴說明,可與本瀏覽器工具相互搭配。
輸入驗證與拒絕的值
產生器僅接受純十進位整數文字。小數、科學記號、正負號、分隔符號、負數、空值,以及超過一千的項數都會被拒絕,而非進行四捨五入或默默限制。這項嚴格的原則是唯一能保證帶索引的十進位數列符合使用者要求、且輸出中不隱藏意外狀況的方法。
零被視為無效項數,而非「不產生任何內容」,因為請求零項沒有任何有意義的第一列可以回傳。一千項的上限是產品效能的邊界,並非費波那契數列的數學極限;F(999) 已經包含數百位十進位數字,而完整的 F(999) 含索引清單大小已需要捲動才能瀏覽。設定固定上限可避免意外產生龐大的 DOM 與剪貼簿內容,同時仍涵蓋課堂作業、示範、測試樣本,以及許多程式設計範例。
若需要更大的規模,例如數百萬項或專門的數論分析,合適的環境應是具備串流或檔案型輸出策略的專屬程式語言,而非瀏覽器小工具。1,000 項上限對於日常任務已相當充裕,但刻意設計為不會取代伺服器端或函式庫型的產生器來處理大量資料。
帶索引數列的實際用途
產生器所產生的帶索引清單在多種情境中都有直接的應用。程式設計師可以將各列直接貼入測試樣本,驗證其費波那契實作是否符合標準遞迴,因為 BigInt 產生的數值是精確的參考值,而非近似值。教師可以複製前二十或三十項到練習卷中,讓學生練習加法驗算而無需手動重新計算。由於每一列都帶有其索引,遞迴示範會更清楚,因為 F(n) = F(n−1) + F(n−2) 這個公式可以直接從表格中讀出。
下表概述特定輸入項數如何對應到產生的範圍,因為這個對應關係是由本工具明確定義,而非依據一般慣例推論:
| 輸入項數 | 產生範圍 | 最終索引 |
|---|---|---|
| 1 | F(0) | 0 |
| 5 | F(0) 至 F(4) | 4 |
| 10 | F(0) 至 F(9) | 9 |
| 20 | F(0) 至 F(19) | 19 |
| 100 | F(0) 至 F(99) | 99 |
| 1,000 | F(0) 至 F(999) | 999 |
每一產生的列左側包含其索引,右側包含十進位數值,因此即使前兩個不同的項數值都等於 1(F(0) = 0、F(1) = 1、F(2) = 1),每個值的位置仍然毫無歧義。清單上方的摘要面板也會同時回報產生的項數與最終索引,因此邊界可一目了然地驗證。
驗證與隱私
費波那契數列產生器採用NIST 數學函數數位圖書館以及OEIS 數列 A000045所記錄的零起始定義,兩者皆固定 F(0) = 0、F(1) = 1,並以 n ≥ 2 的加法遞迴定義。由於實作完全遵循這些已發表的定義,每個產生的值都可以與參考數學來源所使用的相同定義進行交叉比對。
所有驗證、加法、格式化與複製作業都在當前瀏覽器本機執行。該小工具不會儲存歷史紀錄、不會建立帳戶紀錄、不會呼叫數列 API,也不會載入遠端數值表格,因此項數與產生的數列絕不會離開使用者的裝置。這個隱私邊界對於在敏感測試資料上使用本工具,或在涉及學生作品的課堂環境中使用的人來說非常重要。複製動作會寫入與輸出中相同的以換行分隔文字,不會插入分群分隔符號、不會省略前段的重複項,也不會將較大的值替換為指數記號。若無法使用剪貼簿權限,工具會回報該限制,並讓產生的文字保持可見以便手動選取。
若讀者希望進一步檢查其底層計算方法,或將其與其他實作進行比較,精確計算費波那契數列的指南會詳細說明相同的遞迴方式。與產生器搭配使用時,該資源足以驗證帶索引的輸出結果以及其背後的實作概念。