Skip to content

Latest commit

 

History

History
23 lines (18 loc) · 1013 Bytes

README.md

File metadata and controls

23 lines (18 loc) · 1013 Bytes

Tail Code Optimization

It is often difficult to connect knowledge learned in recursion with practice. Compilers associated with popular programming languages do not automatically transform recursive calls into iterative ones, and this ends up in a difficulty to efficiently implement recursive techniques. Given the advantages of approaching the code recursively, such as brevity and reducing the number of states to be handled, it is worth finding a way to adapt the code in order to abstract the programming logic. In this code, I present a way to implement the conversion for a specific case, tail recursion in JavaScript.

For using this code all you have to do is:

  function recursiveFuction(recursiveFunctionParameters) {
      if (someBaseCase) {
        return new BaseCase(someValue);
      } else if (anotherBaseCase) {
        return new BaseCase(anotherValue);
      } else {
        return new TailCall(newArgs);
      }
  }

  tco(recursiveFunction, recursiveFunctionArgs)