×

Base Case in Recursive function python

In this article, we will learn about Python's base case in a recursive function.

Before learning this, let’s first understand what recursion is in Python and the use of recursion in Python.

What is Recursion in Python?

Defining something in terms of another object is known as recursion. A concrete example would be to align two parallel mirrors to face one another, and any object in their path would be recursively mirrored. This can allow you to loop through data to conclude.

Recursion is a computational technique for solving problems in computer science where the answer depends on answers to smaller versions of the same question. It uses functions that call themselves from within its code to deal with such recursive issues. The approach can be applied to a variety of problems.

Recursive Function in Python

Recursive functions recall themselves, as implied by the word "recursive." As a result, the identity function is invoked once or more.

The winding and unwinding phases are the two separate working phases of all recursive functions. The first call to the recursive function initiates the winding phase, which continues until the last call.

The syntax of the recursive function is given below:

Base Case in Recursive Function Python

Let’s understand recursion by taking an example given below:

Example

#defining a function as greet
def greet(n: int):
   if n == 0:
       return
   # recursive call
   greet(n - 1)
#print hello world
   print("Hello world!")


# function call
greet(5)

Output

Base Case in Recursive Function Python

In the above example, we are printing Hello world! Five times using recursion.

So firstly, we create a function name as greet and pass parameter n in it.

Then check if n == 0, then return again and else n is not 0 then print hello world n-1 times bu recursive call and for printing Hello world we should call the function as greet() and put in this the no that how many times we want to print this.

In this way, we print 5 times. Hello world! By using a recursive call.

Use of Recursion in Python

When problems may be divided into simpler components for faster computation and more understandable code, recursion is used in Python.

There are two options, for example, if you look up a student in a school. You may assemble the pupils in a large auditorium and go through each individually looking for her. It would make more sense to first look for the grade she is in, then the class, and then you'll be able to identify her location much more quickly.

A simpler technique would divide the school into sections until the smallest section could be created to find the kid. Recursion can increase memory use even if it has been shown in some circumstances to produce results more quickly when correctly optimized.

NOTE: Therefore, recursion should only be used when necessary.

The following two essential parts must be considered before writing any recursive functions:

  • Recursive case
  • Base case

Recursive Case in Python

A recursive case should be included in a recursive function, calling the recursive function with input to move it closer to its base case.

The use of a call stack is a feature of recursive functions, and the recursive function is added to the top of this stack each time it is invoked. Imagine cutting open an onion and placing each layer you remove close to it. Each layer would then be peeled and stacked on top of one another, and this is now put up against a recursive function.

A recursive function call would be required to peel each layer. The first peel() would be inserted at the top of the stack once the first layer is peeled, followed by the next peel() above it, and so on until the process is finished.

Base Case in Python

The simplest example that must be considered when solving a problem is the Base Case, which also results in the termination

 of the recursion.

When the recursive function should stop, it is determined by the base case. The base case and its solution must be found first to create a recursive function.

Depending on many factors, more than one base case can be used. Once a base case has been determined, it is necessary to decide on the general or recursive case such that each call advances us closer to obtaining the base case.

Below is the syntax of recursive case and base case in Python:

def recursive_function_name():
if(condition)                       # base case
      	 #This is a simple statement without recursion


else                                # recursive case
      	 This statement is calling recursive_function_name()

Note: If your function doesn't have a base case, it calls itself infinite times and might use all of your memory for the recursive stack.

Let’s understand it by taking an example given below:

Example

#defining a function name as factorial() with parameter n
def factorial(n: int):
   ans = n
   ans *= factorial(n-1)
   return ans


#prints factorial of 5 as output
print("factorial of 5 is", factorial(5))

Output

RecursionError: maximum recursion depth exceeded

In the above example, we do not have any base case. We can see the factorial() function is called till there is memory in the stack, but we didn’t get any answer.

In order to obtain the desired outcome, it is advisable to employ a base case and be pretty intuitive.

Generally, the base case is decided by keeping in mind what can be the smallest input and what will be the output for that input.

In the above example, the smallest inputs may be 1 or 0. For these inputs, the function should return 1 because the factorial of 1 and 0 will be 1.

#defining a function name as factorial() with parameter n
def factorial(n: int):
   ans = n
   if n <= 1: #base case
       return 1
   else:
       ans *= factorial(n-1)
   return ans


#prints factorial of 5 as output
print(factorial(5))

Output

120

In the above example, we have a base case when the value of n is less than or equal to 1, and then our factorial function will return 1.

In the above example, we are calculating the factorial of 5. So we have called factorial function with parameter value 5. 5 is not less than or equal to 1, so it will go in else part. Here ans having value 5 will be multiplied by the factorial of 4.

That will be factorial of 5, and then ans should be returned. But factorial (4) value is unknown, so it will calculate it the same way as the computed factorial of 5 (i.e. factorial of 4 = 4 * factorial of 3) and so on. As the value of n will be 1 function will return 1. Now we have the value of factorial 1, so the function can calculate the value of factorial 2 and then the value of factorial 3 and so on, and now it will return the value of factorial 5, which will be 120.

Let’s take one more example better to understand a base case in Python's recursion.

Example

#defining a function name as gcd() with parameters a and b
def gcd(a,b):
   if b== 0:    #base case
        return a
#recursive case
   return gcd (b,a%b)
#prints gcd of 100 and 200 as output
print(gcd(100,200))

Output

100

We can calculate the GCD of two numbers by using recursion in Python.

The above example holds GCD of a and b. If a>b, then GCD is the same as gcd (b,a%d).

The base case in the above example is when b==0 as gcd (a, 0) is a. Observe that the second input strictly reduces in each recursive iteration since a % b <b to show that the reduction step converges to the base case. 

The first recursive call switches arguments if a>b.

Conclusion

We deal with a counter or a Boolean variable with an iterative approach. If it is true, then we iterate in a loop, and when the condition becomes false, we come out of the loop.

In recursion, this concept is known as the base condition. It is the end of the recursion. The base case determines whether the recursive function will call itself or it will return. Without the base case writing a recursive function is similar to writing an infinite loop.

Your computer will display an error due to a stack overflow since we utilize a call stack to keep track of the function calls if the base case is insufficient.


Related Topics

Python Project Ideas Based On Django

Introduction If you have learned Python and you are an expert in Django, then your practical skills should be excellent in this field. If you want to check your practical skills,...

9 minutes read.

What is Ipython shell?

IPython is a command shell for computing in multiple programming languages. IPython was developed for python language by Fernando Perez in 2001 as a well-equipped python interpreter that offers shell...

3 minutes read.

How to declare array in python

How to declare array in python? Arrays are a great way of storing our numeric values into a variable in continuous locations. For declaring an array in C language, we used...

4 minutes read.

Falcon Python

Introduction of Python Python is the fastest and the smartest programming language and it is an object oriented language. Python has libraries that can be importedeasily and perform many operations; to...

3 minutes read.

Python Functionalities of Pillow Module

This instructional exercise is about "Pillow" library, one of the significant libraries of python for picture control. Pillow library of python, is an easy to use and also open source...

14 minutes read.

Python Infinity

Introduction We will discover how to define an infinite number in Python in this tutorial. Infinity, as we all know, is a value that cannot be defined and can either be...

5 minutes read.

Operator Overloading in Python

In any programming language, + is an arithmetic operator; it adds two numbers to give the sum. Have you ever tried to concatenate two strings? Concatenating two strings is adding...

5 minutes read.

Executing Shell Commands in Python

This tutorial aims to make us understand what a Shell is, what is the importance of a Shell, what are Shell commands in Python, and how can we execute the...

3 minutes read.

Reverse a String in Python

Python is an object-oriented high-level programming language. Python has dynamic semantics and has high-level built-in data structures which support dynamic typing and dynamic binding. Python provides rapid development. It has...

4 minutes read.

How to Concat two Dataframes in Python

Using Pandas dataframe, we can concat two dataframes or series in Python. So let's take a brief introduction to what is Pandas in Python. Pandas is a library typically used for...

7 minutes read.

Enumerate() Function in Python

The enumerate() function in Python is used to convert a data collection object into an enumerate object. It returns an object that contains a counter as a key for each...

3 minutes read.

Weight Conversion GUI using Tkinter in Python

GUI: One of the most significant factors that increased the usability of computer and digital technologies for common, less tech-savvy users is likely the development and widespread adoption of GUIs. GUIs...

3 minutes read.

Python Dictionary Methods

Python Dictionary Methods Python has a set of built-in methods that dictionary objects can call. All the python dictionary methods are as follow: Methods Description clear() The dictionary.clear() method removes all the elements...

3 minutes read.

PyDev with Python IDE

What is IDE? Integrated Development Environment is the abbreviation of IDE. It is a coding tool that automates code editing, finding errors and testing. IDE combines all the developer tools into...

3 minutes read.

How to Substring a String in Python

String Unicode characters collection is referred to as a String. It consists of a succession of characters, including alphanumeric and special characters. Substring: Core Concept A substring is a piece of a string....

5 minutes read.

Python File Handling

What is the file? The file is a collection of data in a single unit. It is used to store information in the non-volatile memory such as hard-disk. Computer programs generally run on the RAM...

7 minutes read.

Python Call Function

In this article, you will learn about calling a function in Python. But before learning this, we should know about functions in Python.So, let’s get some overview of functions in...

6 minutes read.

Python List Methods

Python List Methods Python has a set of built-in methods that you can use on lists or arrays. Following are all of the methods of list objects: Methods Explanation append The list.append() method...

3 minutes read.

Python globals() function

Python globals() function The globals() function in Python returns the value of the named attribute of object where the ‘name’ must be a string. Syntax globals() Parameter NA Return This function returns the global symbol table as a dictionary. Example...

1 minute read.

Sort a dataframe based on a column in Python

Sorting the dataframe based on a column requires pandas which is An open-source library called Python Pandas is described as offering high-performance data processing in Python. For both professionals and...

4 minutes read.