Recursion 為 FP 中重要的一支,亦可使用其實現 reduce()
。
Version
macOS Catalina 10.15.3
VS Code 1.42.1
Quokka 1.0.277
ECMAScript 2015
reduce()
let data = [1, 2, 3]
let reducer = (a, x) => a += x
let reduce = f => init => ([h, ...t]) => !h ? init : reduce(f)(f(init, h))(t)
reduce(reducer)(0)(data) // ?
Resursion 會將 array 拆分成 head 與 tail,若 head 為 undefined
時為初始值 []
,剩下的 tail 將 recursive 呼叫本身的 reduce()
。
Conclusion
- 將 array 拆成 head 與 tail 為 recursion 慣用 pattern,然後 tail 會不斷呼叫自己 recursive 解決問題