我是 dw / David Ye,是 Houzz 的軟體工程師。
化學系畢業,興趣是聽音樂看動漫追劇打遊戲,偶爾來這邊寫寫文章。
這個 Blog 主要紀錄:
- 新技術學習或是應用
- 喜歡的歌詞翻譯與心得
我是 dw / David Ye,是 Houzz 的軟體工程師。
化學系畢業,興趣是聽音樂看動漫追劇打遊戲,偶爾來這邊寫寫文章。
這個 Blog 主要紀錄:
在第四篇提到費氏數列的公式解會遇到浮點數問題,只能精準算到 122 位。因為浮點數是利用二進位的小數來做儲存,對於非二進位的數字會有誤差。而且其儲存位數有上限,對於無理數的運算,超過一定的大小就會出現精確度問題。
所以這篇就要來簡單使用 Python 內建的 Decimal module 來拉高浮點數運算的精確度。
在第二篇介紹了費氏數列的矩陣解法,不過費氏數列其實是可以直接用公式算出第 n 項的值的,這邊就來介紹並推導一下公式解,順便幫自己複習一下數學 XD
上篇寫到費氏數列的矩陣解法來達成 $O(\lg n)$ 的時間複雜度,實際上可以再做一些變化來簡化計算。如果目標時間複雜度是 $O(\lg n)$,代表我們要能每次直接計算當 n 變成兩倍時的數值。
下面介紹的 Fast Doubling 方法就是這個例子。
不管是 FB 粉專,或是以前無名小站時代的部落格系統,都有提供排程發表文章的功能,讓寫手在靈感特別多的時候,或是行銷人員希望配合特定時程,可以預先寫好未來要發表的文章,並且在時間到的時候自動發表。
問題來了,如果是使用像 Hugo 這種靜態網站產生器,能否實現相同的功能呢?
在上篇我們討論了費氏數列的各種基本解法。
原本我也以為 O(n) 的迭代解就已經是標準解法了,直到被大神朋友指正:
問費氏數列應該是想聽 $O(\lg n)$ 解法吧?
查了一下還真的有,這篇文章寫得蠻完整的,這篇會參考該篇文章來撰寫,但會用我自己的話以及 Python 寫出來。