StudyLover
  • Home
  • Study Zone
  • Profiles
  • Contact us
  • Sign in
StudyLover Recursive Functions
Download
  1. Python
  2. Problem Solving: Lists, Dictionaries, and Function-Based Design
Program Design
Problem Solving: Lists, Dictionaries, and Function-Based Design

Recursive Functions

A recursive function is a function that calls itself directly or indirectly. They are often used to solve problems that can be broken down into smaller, similar subproblems.

Basic Structure:

Python

def recursive_function(arg):

  if base_case_condition:

    return base_case_value

  else:

    return recursive_function(modified_arg)

Key Components:

  • Base case: The condition that terminates the recursion.

  • Recursive case: The part of the function that calls itself with modified arguments.

Example: Factorial Calculation

Python

def factorial(n):

  if n == 0:

    return 1

  else:

    return n * factorial(n-1)

 
result = factorial(5)

print(result)  # Output: 120

Tail Recursion

  • A recursive function where the recursive call is the last operation performed.

  • Can be optimized by compilers for better performance.

  • Example:

Python

def factorial_tail_recursive(n, acc=1):

  if n == 0:

    return acc

  else:

    return factorial_tail_recursive(n-1, n*acc)

Cautions:

  • Infinite recursion: Avoid infinite loops by ensuring the base case is always reached.

  • Stack overflow: Excessive recursion can lead to stack overflows, especially for deep recursion.

  • Performance: Recursive functions can be less efficient than iterative ones for certain problems.

When to Use Recursion:

  • Problems that can be naturally divided into smaller subproblems.

  • Tree and graph traversals.

  • Divide-and-conquer algorithms.

By understanding recursive functions and their applications, you can write elegant and efficient Python code for solving a variety of problems.

 

Recursive Functions in Python

A recursive function is a function that calls itself directly or indirectly. They are often used to solve problems that can be broken down into smaller, similar subproblems.

Basic Structure:

Python

def recursive_function(arg):

  if base_case_condition:

    return base_case_value

  else:

    return recursive_function(modified_arg)

Key Components:

  • Base case: The condition that terminates the recursion.

  • Recursive case: The part of the function that calls itself with modified arguments.

Example: Factorial Calculation

Python

def factorial(n):

  if n == 0:

    return 1

  else:

    return n * factorial(n-1)

 
result = factorial(5)

print(result)  # Output: 120

Tail Recursion

  • A recursive function where the recursive call is the last operation performed.

  • Can be optimized by compilers for better performance.

  • Example:

Python

def factorial_tail_recursive(n, acc=1):

  if n == 0:

    return acc

  else:

    return factorial_tail_recursive(n-1, n*acc)

Cautions:

  • Infinite recursion: Avoid infinite loops by ensuring the base case is always reached.

  • Stack overflow: Excessive recursion can lead to stack overflows, especially for deep recursion.

  • Performance: Recursive functions can be less efficient than iterative ones for certain problems.

When to Use Recursion:

  • Problems that can be naturally divided into smaller subproblems.

  • Tree and graph traversals.

  • Divide-and-conquer algorithms.

Additional Examples:

1. Fibonacci Sequence:

Python

def fibonacci(n):

  if n <= 1:

    return n

  else:

    return fibonacci(n-1) + fibonacci(n-2)

2. Tower of Hanoi:

Python

def tower_of_hanoi(n, source, destination, auxiliary):

  if n == 1:

    print(f"Move disk 1 from {source} to {destination}")

  else:

    tower_of_hanoi(n-1, source, auxiliary, destination)

    print(f"Move disk {n} from {source} to {destination}")

    tower_of_hanoi(n-1, auxiliary, destination, source)

3. Merge Sort:

Python

def merge_sort(arr):

  if len(arr) <= 1:

    return arr

  

  mid = len(arr) // 2

  left_half = merge_sort(arr[:mid])

  right_half = merge_sort(arr[mid:])

  

  return merge(left_half, right_half)

 
def merge(left, right):  

  # ... implementation of merge function

By understanding recursive functions and their applications, you can write elegant and efficient Python code for solving a variety of problems.

 

Program Design
Our Products & Services
  • Home
Connect with us
  • Contact us
  • +91 82955 87844
  • Rk6yadav@gmail.com

StudyLover - About us

The Best knowledge for Best people.

Copyright © StudyLover
Powered by Odoo - Create a free website