5 Simple Recursion Programs in Python.
Srikanth
Posted on September 5, 2020
Here are 5 simple Python recursive functions that will get you started with the practicing recursion.
These are exercise problems taken from the book - Data Structures and Algorithms in Python Michael H. Goldwasser, Michael T. Goodrich, and Roberto Tamassia
Write a short recursive Python function that finds the minimum and maximum values in a sequence without using any loops.
The idea here is to split the list of numbers into two halves and recursively call the function on each of them and making a comparison until you have a list containing only one number in which case you just return the number.
# Recursive algorithm for finding maximum number in
# a array.
def maximum_in_list(nums):
l = len(nums)
if l == 1:
return nums[0]
m1 = maximum_in_list(nums[0:l//2])
m2 = maximum_in_list(nums[l//2:l])
if m1 > m2:
return m1
else:
return m2
Describe a recursive algorithm to compute the integer part of the base-two logarithm of n using only addition and integer division.
The idea here is to recursively call the function while dividing the number by 2. Returning 0 if the number is less than 2 or return 1 if the number is equal to 2.
# Recursive algorithm to compute
# integer part of base 2 logarithm of n.
def log_base2(n):
if n < 2:
return 0
if n == 2:
return 1
return 1 + log_base2(n//2)
Write a short recursive Python function that takes a character string and outputs its reverse.
This is a little hard to explain for me. The idea here is to get to the last character of the string by recursively calling the function where the 2 inputs are the first character of the string and the rest of the string. Once we get to the last character, we concatenate the inputs and return the result.
# Recursive function to reverse a string.
def reverse_string(string):
def get_reversed_string(string_a, string_b):
## check if string_b
## is the last letter of the string.
if len(string_b) == 1:
return string_b + string_a
else:
return get_reversed_string(string_b[0], string_b[1:]) + string_a
return get_reversed_string(string[0], string[1:])
Write a short recursive Python function that determines if a string is a palindrome
The idea is pretty straightforward once you figured out how to reverse a string.
# Recursive function to check
# if a string is a palindrome
def is_palindrome(string):
if string == reverse_string(string):
return True
return False
Use recursion to write a Python function for determining if a string s has more vowels than consonants.
The idea here is to split the string into two halves just like I did finding the maximum number in a list, in the very first program above. Once the string has only one character I will check whether it is a vowel or not, and thus the results get added up recursively.
# Python function for determining if a
# string has
# more vowels than consonants.
def if_more_vowels(string):
def count_vowels(string):
l = len(string)
if l == 1:
if string.lower() in ['a', 'e', 'i', 'o', 'u']:
return 1
return 0
vowels_a = count_vowels(string[0:l//2])
vowels_b = count_vowels(string[l//2:l])
return vowels_a + vowels_b
vowels = count_vowels(string)
if vowels > len(string) - vowels:
return True
return False
Thanks for reading, let me know your thoughts or share your favorite recursive programs.
Happy learning.
Posted on September 5, 2020
Join Our Newsletter. No Spam, Only the good stuff.
Sign up to receive the latest update from our blog.