Skip to content

Instantly share code, notes, and snippets.

@danny-andrews
Last active July 6, 2021 16:50
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save danny-andrews/2ac9bceb762f197b0c827f2a4324c03c to your computer and use it in GitHub Desktop.
Save danny-andrews/2ac9bceb762f197b0c827f2a4324c03c to your computer and use it in GitHub Desktop.
Recursive Reverse
const reverseIterative = (arr) => {
const result = [];
for (let i = arr.length - 1; i >= 0; i--) {
result.push(arr[i]);
}
return result;
};
const reverseRec = (arr) =>
arr.length === 0 ? [] : arr.slice(-1).concat(reverseRec(arr.slice(0, -1)));
// reverseRec([1, 2, 3]);
// [3] + reverseRec([1, 2])
// [3] + ([2] + reverseRec([1]))
// [3] + ([2] + ([1] + reverseRec([])))
// [3] + ([2] + ([1] + []))
// [3] + ([2] + [1])
// [3] + [2, 1]
// [3, 2, 1]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment