Open In App

JavaScript Program to Forced Exit from Recursion

Last Updated : 22 Sep, 2023
Improve
Improve
Like Article
Like
Save
Share
Report

Recursion is a powerful programming technique that involves calling a function to solve a problem in smaller parts. However, during recursive operations, there may be scenarios where we need to forcibly exit the recursion to prevent an infinite loop or avoid unnecessary computations. In this article, we’ll explore common situations where forced exit from recursion is necessary and how to implement solutions to handle them in JavaScript, specifically in the context of React components.

Example: Let’s start by examining a simple recursive function that calculates the factorial of a positive integer but lacks proper exit conditions.

Javascript




// Recursive Factorial Function
const factorial = (n) => {
    if (n <= 0) {
        // Missing base case, recursion
        // can run indefinitely
    }
    return n * factorial(n - 1);
};
  
// Invoking the Recursive Factorial Function
const result = factorial(5);
console.log(result);


Output (Error):

Uncaught RangeError: Maximum call stack size exceeded

The code above throws a “Maximum call stack size exceeded” error since the recursion doesn’t have a proper base case to terminate when n reaches zero or less.

To deal with the problem of forced and premature exit from recursion, we will use several techniques to handle different scenarios effectively.

Method 1: Base Case Implementation

The base case is the simplest scenario where the recursion stops. Let’s update our factorial function to include the base case as with the base case, the factorial function now terminates correctly when n becomes 0 or negative, giving the correct result.

Example:

Javascript




const factorial = (n) => {
    // Base case: Factorial of 0 
    //or negative numbers is 1
    if (n <= 0) {
        return 1; 
    }
    return n * factorial(n - 1);
};
  
const result = factorial(5);
  
console.log(result);


Output

120

Method 2: Conditional Termination

In some cases, we may want to force the termination of recursion based on specific conditions. For example, let’s consider a function that calculates the sum of all positive integers up to a given number but forcefully exits when the number exceeds a certain threshold:

Javascript




const sumUpTo = (n, limit) => {
  
    // Forcefully terminate recursion 
    // if n exceeds the limit
    if (n > limit) {
        return 0; 
    }
    return n + sumUpTo(n + 1, limit);
};
  
const result = sumUpTo(1, 10);
  
console.log(result);


Output

55

In this example, when n exceeds the limit we terminate the recursion and return 0. Ensures that the sum only includes positive integers up to the specified range.



Like Article
Suggest improvement
Share your thoughts in the comments

Similar Reads