Unit 5 · Lesson 6
Recursion in Practice
Apply recursive thinking to strings, lists, and real problems.
Process strings recursively
Check palindromes
Recursive power function
Flatten nested structures
Recursive String Processing
Process first character + recurse on rest:
def reverse(s):
if len(s) <= 1: return s
return reverse(s[1:]) + s[0]
Thinking Recursively
"Trust the recursion." Assume the recursive call works for smaller input, handle just the current step.
Recursion vs loops: Recursion shines with nested structures and divide-and-conquer. Loops are simpler for flat iteration.
Practice Time
Challenges
Challenge 1: Reverse String
Guided
Recursively reverse a string.
Instructions:
reverse(s) returns reversed string.Hint: Base: if len(s)<=1: return s. Recursive: return reverse(s[1:]) + s[0]
Challenge 2: Palindrome Checker
Guided
Recursively check palindrome.
Instructions:
is_palindrome(s) checks first vs last, recurses on middle.Hint: Base: len<=1: True. if s[0]!=s[-1]: False. Recurse: is_palindrome(s[1:-1])
Challenge 3: Power (Recursive)
Solo
Recursive power function.
Instructions:
power(base, exp). Base: exp==0 returns 1.Hint: Base: if exp==0: return 1. Recursive: return base * power(base, exp-1)
Challenge 4: Flatten
Stretch
Recursively flatten nested list.
Instructions:
flatten(lst) turns [1,[2,[3,4]],5] into [1,2,3,4,5].Hint: result=[]. For each item: if isinstance(item,list): result.extend(flatten(item)) else: result.append(item)