0% found this document useful (0 votes)
53 views

What Is Recursion

Recursion is a technique where a function calls itself directly or indirectly. It allows solving problems by breaking them down into smaller subproblems until reaching a base case. For recursion to terminate, a base case that does not call the function must be defined. Each recursive call uses additional memory on the stack, so ensuring the base case is reached prevents stack overflow errors.

Uploaded by

Prishita Kapoor
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
53 views

What Is Recursion

Recursion is a technique where a function calls itself directly or indirectly. It allows solving problems by breaking them down into smaller subproblems until reaching a base case. For recursion to terminate, a base case that does not call the function must be defined. Each recursive call uses additional memory on the stack, so ensuring the base case is reached prevents stack overflow errors.

Uploaded by

Prishita Kapoor
Copyright
© © All Rights Reserved
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
You are on page 1/ 4

What is Recursion?

 The process in which a function calls itself directly or indirectly is called


recursion and the corresponding function is called a recursive function.
 Using a recursive algorithm, certain problems can be solved quite
easily.
 Examples of such problems are Towers of Hanoi
(TOH), Inorder/Preorder/Postorder Tree Traversals, DFS of Graph,
etc.
 A recursive function solves a particular problem by calling a copy of
itself and solving smaller subproblems of the original problems.
 Many more recursive calls can be generated as and when required.
 It is essential to know that we should provide a certain case in order to
terminate this recursion process.
 So we can say that every time the function calls itself with a simpler
version of the original problem.
Need of Recursion
 Recursion is an amazing technique with the help of which we can
reduce the length of our code and make it easier to read and write.
 A task that can be defined with its similar subtask, recursion is one of
the best solutions for it. For example; The Factorial of a number.
Properties of Recursion:
 Performing the same operations multiple times with different inputs.
 In every step, we try smaller inputs to make the problem smaller.
 Base condition is needed to stop the recursion otherwise infinite
loop will occur.
Algorithm: Steps
The algorithmic steps for implementing recursion in a function are
as follows:

Step1 - Define a base case: Identify the simplest case for which
the solution is known or trivial. This is the stopping condition
for the recursion, as it prevents the function from infinitely
calling itself.

Step2 - Define a recursive case: Define the problem in terms of


smaller subproblems. Break the problem down into smaller versions
of itself, and call the function recursively to solve each
subproblem.

Step3 - Ensure the recursion terminates: Make sure that the


recursive function eventually reaches the base case, and does not
enter an infinite loop.
step4 - Combine the solutions: Combine the solutions of the
subproblems to solve the original problem.
A Mathematical Interpretation
Let us consider a problem that a programmer has to determine the sum of
first n natural numbers, there are several ways of doing that but the simplest
approach is simply to add the numbers starting from 1 to n. So the function
simply looks like this,
approach(1) – Simply adding one by one
f(n) = 1 + 2 + 3 +……..+ n
but there is another mathematical approach of representing this,
approach(2) – Recursive adding
f(n) = 1 n=1
f(n) = n + f(n-1) n>1
There is a simple difference between the approach (1) and approach(2) and
that is in approach(2) the function “ f( ) ” itself is being called inside the
function, so this phenomenon is named recursion, and the function
containing recursion is called recursive function, at the end, this is a great
tool in the hand of the programmers to code some problems in a lot easier
and efficient way.
How are recursive functions stored in memory?
Recursion uses more memory, because the recursive function adds to the
stack with each recursive call, and keeps the values there until the call is
finished. The recursive function uses LIFO (LAST IN FIRST OUT) Structure
just like the stack data structure.
What is the base condition in recursion?
In the recursive program, the solution to the base case is provided and the
solution to the bigger problem is expressed in terms of smaller problems.

int fact(int n)
{
if (n < = 1) // base case
return 1;
else
return n*fact(n-1);
}
In the above example, the base case for n < = 1 is defined and the larger
value of a number can be solved by converting to a smaller one till the base
case is reached.
How a particular problem is solved using recursion?
The idea is to represent a problem in terms of one or more smaller problems,
and add one or more base conditions that stop the recursion. For example,
we compute factorial n if we know the factorial of (n-1). The base case for
factorial would be n = 0. We return 1 when n = 0.
Why Stack Overflow error occurs in recursion?
If the base case is not reached or not defined, then the stack overflow
problem may arise. Let us take an example to understand this.
int fact(int n)
{
// wrong base case (it may cause
// stack overflow).
if (n == 100)
return 1;

else
return n*fact(n-1);
}
If fact(10) is called, it will call fact(9), fact(8), fact(7), and so on but the
number will never reach 100. So, the base case is not reached. If the
memory is exhausted by these functions on the stack, it will cause a stack
overflow error.
What is the difference between direct and indirect recursion?
A function fun is called direct recursive if it calls the same function fun. A
function fun is called indirect recursive if it calls another function say fun_new
and fun_new calls fun directly or indirectly. The difference between direct
and indirect recursion has been illustrated in Table 1.
// An example of direct recursion
void directRecFun()
{
// Some code....

directRecFun();

// Some code...
}

// An example of indirect recursion


void indirectRecFun1()
{
// Some code...

indirectRecFun2();
// Some code...
}
void indirectRecFun2()
{
// Some code...

indirectRecFun1();

// Some code...
}
What is the difference between tailed and non-tailed recursion?
A recursive function is tail recursive when a recursive call is the last thing
executed by the function. Please refer tail recursion article for details.
How memory is allocated to different function calls in recursion?
When any function is called from main(), the memory is allocated to it on the
stack. A recursive function calls itself, the memory for a called function is
allocated on top of memory allocated to the calling function and a different
copy of local variables is created for each function call. When the base case
is reached, the function returns its value to the function by whom it is called
and memory is de-allocated and the process continues.
Let us take the example of how recursion works by taking a simple function.

Recursion VS Iteration
SR
Recursion Iteration
No.

Terminates when the base case becomes Terminates when the condition
1)
true. becomes false.

2) Used with functions. Used with loops.

Every recursive call needs extra space in Every iteration does not require
3)
the stack memory. any extra space.

4) Smaller code size. Larger code size.

You might also like