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)