# Learning Python Part-24: Recursive function, Lambda Function

Python Recursive Function:

Recursion is the process of defining something in terms of itself. We know that in Python, a function can call other functions. It is even possible for the function to call itself.  These type of construct are termed as recursive functions.

• Following is an example of recursive function to find the factorial of an integer.
• Factorial of a number is the product of all the integers from 1 to that number.
• For example, the factorial of 6 (denoted as 6!) is 1*2*3*4*5*6 = 720.
• Example: In this example, factorial() is a recursive functions as it calls itself.
def factorial(x):
if x == 1:
return 1
else:
return (x * factorial(x-1))

num = 6
print(“The factorial of”, num, “is”, factorial(num))

• Recursive functions make the code look clean and elegant.
• A complex task can be broken down into simpler sub-problems using recursion.
• Sequence generation is easier with recursion than using some nested iteration.

• Sometimes the logic behind recursion is hard to follow through.
• Recursive calls are expensive (inefficient) as they take up a lot of memory and time.
• Recursive functions are hard to debug.

Python Anonymous function (AKA Lambda Function):
In Python, anonymous function is a function that is defined without a name. Python anonymous functions are defined using the lambda keyword. Hence, anonymous functions are also called lambda functions.

Syntax of Lambda Function in python

lambda arguments: expression
• Lambda functions can have any number of arguments but only one expression.
• The expression is evaluated and returned.
• Lambda functions can be used wherever function objects are required.
• Example of Lambda Function in python
double = lambda x: x * 2
print(double(5))                                # Output: 10
• In the above program, lambda x: x * 2 is the lambda function.
• Here x is the argument and x * 2 is the expression that gets evaluated and returned.
• This function has no name.
• It returns a function object which is assigned to the identifier double.

Use of Lambda Function in python:

• We use lambda functions when we require a nameless function for a short period of time.In Python, we generally use it as an argument to a higher-order function (a function that takes in other functions as arguments).
• Lambda functions are used along with built-in functions like filter(), map() etc.

Example:

my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(filter(lambda x: (x%2 == 0) , my_list))
print(new_list)

# Output:

[4, 6, 8, 12]

• The filter() function in Python takes in a function and a list as arguments.
• The function is called with all the items in the list and a new list is returned which contains items for which the function evaluates to True.
• Here is an example use of filter() function to filter out only even numbers from a list.
Example use with map():

• The map() function in Python takes in a function and a list.
• The function is called with all the items in the list and a new list is returned which contains items returned by that function for each item.
• Here is an example use of map() function to double all the items in a list.

my_list = [1, 5, 4, 6, 8, 11, 3, 12]
new_list = list(map(lambda x: x * 2 , my_list))
print(new_list) à

# Output:

[2, 10, 8, 12, 16, 22, 6, 24]