diff --git a/exercises/basic_recursion/solution/solution.js b/exercises/basic_recursion/solution/solution.js index 485507f..514d7d9 100644 --- a/exercises/basic_recursion/solution/solution.js +++ b/exercises/basic_recursion/solution/solution.js @@ -1,8 +1,7 @@ function reduce(arr, fn, initial) { - return (function reduceOne(index, value) { - if (index > arr.length - 1) return value // end condition - return reduceOne(index + 1, fn(value, arr[index], index, arr)) // calculate & pass values to next step - })(0, initial) // IIFE. kick off recursion with initial values + if (arr.length === 0) return initial // end condition + var subset = arr.slice(0, arr.length - 1) // setup recursive call with left subset + return fn(reduce(subset, fn, initial), arr[arr.length - 1]) // pass last element to traverse ltr } module.exports = reduce