Advertisement
First, we should know about tail call before talking about "Proper Tail Call". A tail call is a subroutine or function call performed as the final action of a calling function. Whereas Proper tail call(PTC) is a technique where the program or code will not create additional stack frames for a recursion when the function call is a tail call.
For example, the below classic or head recursion of factorial function relies on stack for each step. Each step need to be processed upto n * factorial(n - 1)
1function factorial(n) {
2
3if (n === 0) {
4 return 1;
5}
6
7return n * factorial(n - 1);
8}
9
10console.log(factorial(5)); //120But if you use Tail recursion functions, they keep passing all the necessary data it needs down the recursion without relying on the stack.
1function factorial(n, acc = 1) {
2
3if (n === 0) {
4 return acc;
5}
6
7return factorial(n - 1, n * acc);
8}
9
10console.log(factorial(5)); //120The above pattern returns the same output as the first one. But the accumulator keeps track of total as an argument without using stack memory on recursive calls.
Advertisement
JavaScript Coding Exercise 71
Test your knowledge with this interactive coding challenge.
Start CodingAdvertisement