推 pmove : 遞迴是直接描述所要計算的值 08/28 08:40
→ mantour : 求出通式不代表值會自己變出來, 是否還要考慮用什 08/31 23:38
→ mantour : 麼演算法去求通式的值 08/31 23:38
→ mantour : 比如求費式數列第n項, 單純遞迴是 O(n^2) 08/31 23:44
→ mantour : 解出通式變成 c(a^n - b^n) 08/31 23:45
→ mantour : 而求a^n如果用最笨的演算法是 O(n) , 如果聰明一點 08/31 23:46
→ mantour : 則是 O(log n) 08/31 23:48
→ mantour : 更正 單純遞迴是 O(2^n) 08/31 23:49
→ mantour : 即使不解出通式, 本來的遞迴式如果改用動態規劃建表 08/31 23:53
→ mantour : 也可以變成O(n), 其實解出通式也是演算法的一種 08/31 23:54
→ mantour : 用不同演算法去算遞迴的值, 複雜度可以不同應該很 08/31 23:54
→ mantour : 合理吧 08/31 23:54
推 Vulpix : 費氏數列用定義遞迴是O(n)吧,每多算一項也只要一次 09/01 01:27
→ Vulpix : 加法。就算連call前兩項都要算進去,也還是O(n)。 09/01 01:28
推 arrenwu : 費氏數列用單純遞迴 f(n) = f(n-1)+f(n-2)是O(2^n) 09/01 04:33
→ arrenwu : O(n) 是用for-loop(迭代)或者加入memoization 09/01 04:34
→ LPH66 : 直接寫不管重覆的應該是 O(φ^n) = O(f(n)) 09/01 08:22
→ LPH66 : (因為唯一的終止條件是 f(1)=f(2)=1) 09/01 08:23
→ LPH66 : 用 memoization 或 DP 式才是 O(n) 沒錯 09/01 08:23
→ LPH66 : 然後計算通式的話指數可以用對數做, 這就成了 O(1) 09/01 08:24
→ LPH66 : 啊, 我是在說任意底指數要乘一個對數值... 09/01 08:25
→ LPH66 : 自然指數和自然對數即使用級數, 算到固定精度的時間 09/01 08:27
→ LPH66 : 可以當做 O(1), 所以算通式在這意義下是 O(1) 09/01 08:28
推 Vulpix : memorization是指這種嗎?f(n)=f(n-1)+g(n-1)然後配 09/01 18:26
→ Vulpix : 上g(n)=f(n-1)←這個? 09/01 18:26
→ Vulpix : 還真的沒有r,好不直覺…… 09/01 18:28
→ LPH66 : memoization 是算過的值寫下來, 之後要就直接拿 09/01 21:48
推 Vulpix : 所以如果之後要多次讀取的話會很方便,但要付出記憶 09/01 22:14
→ Vulpix : 體空間給他的概念吧。那跟上面那個是還有點不一樣, 09/01 22:16
→ Vulpix : 那個寫法是過氣的f,g可以扔掉。 09/01 22:17