[Easy] LeetCode JS 30 - 2629. Function Composition (函式組合)
2024年3月3日
💎 加入 E+ 成長計畫 與超過 400+ 位軟體工程師一同在社群中成長,並且獲得更多的軟體工程學習資源
LeetCode 30 Days of JavaScript
本題來自 LeetCode 的 30 天 JacaScript 挑戰
2629. Function Composition (函式組合)題目描述
給定一個函式陣列 [f1, f2, f3, ... fn]
,回傳一個新的函式 fn
,它是該陣列中函式的組合。
函式組合的定義是,如果函式陣列為 [f(x), g(x), h(x)]
,則 fn(x) = f(g(h(x)))
。空函式陣列的函式組合則為恆等函式 f(x) = x
。
你可以假設陣列中的每個函式都接受一個整數作為輸入,並回傳一個整數作為輸出。
// 範例一
輸入: functions = [x => x + 1, x => x * x, x => 2 * x], x = 4
輸出: 65
解說:
從右到左
初始的 x = 4.
2 * (4) = 8
(8) * (8) = 64
(64) + 1 = 65
// 範例二
輸入: functions = [x => 10 * x, x => 10 * x, x => 10 * x], x = 1
輸出: 1000
解說:
從右到左
10 * (1) = 10
10 * (10) = 100
10 * (100) = 1000
本題解答
以下是本題的解答,詳細解題思路可以在 E+ 成長計畫看到。如果想練習更多題目,推薦可以到 GreatFrontEnd 上練習
解法
var compose = function (functions) {
return function (x) {
let result = x;
for (let i = functions.length - 1; i >= 0; i--) {
result = functions[i](result);
}
return result;
};
};