Recursion Fundamentals — why it breaks your brain (and how to fix it)
Recursion isn't hard because it's complex. It's hard because it asks you to believe a function works before you've finished writing it. That leap of faith is the real skill.
Here's something nobody told me the first time I saw recursion:
The confusion you're feeling is not a sign that you're bad at this. It's a sign that your brain is doing exactly what it should — rejecting an unproven claim.
When you write a recursive function, you're saying "assume this function already works for a smaller input, and use that to solve the current one." Your brain hears that and goes: but I haven't proven it works yet. I'm literally still writing it.
That's the whole problem. Not base cases. Not stack overflows. Not "thinking in trees." The core issue is that recursion requires you to trust the function you haven't finished.
Julia Evans identifies this exact pattern in how we teach programming concepts — we introduce something that depends on understanding six things at once, and then wonder why people are confused. Recursion is the poster child. You're told "the function calls itself" as if that explains anything, when the real mental shift is about believing the call returns the right answer before you've traced through every step.
The Leap of Faith
Let's make this concrete. Here's a function that sums a list:
def sum_list(nums):
if not nums: # base case
return 0
return nums[0] + sum_list(nums[1:]) # recursive caseWhen you read sum_list(nums[1:]), your instinct is to trace it. "Okay, so it calls itself with [2, 3, 4], then that calls itself with [3, 4], then..." — and you're mentally holding four stack frames, losing track, and feeling like you're drowning.
That tracing instinct is the trap.
The fix is counterintuitive: stop tracing. Instead, assume sum_list(nums[1:]) returns the correct sum of the rest of the list. You haven't proven it yet. Trust it anyway.
If sum_list(nums[1:]) correctly returns the sum of everything after nums[0], then nums[0] + sum_list(nums[1:]) correctly returns the sum of the whole list.
That's it. That's the whole argument. The handles the empty list, and the recursive case handles everything else by trusting the recursive call.
Why Your Brain Resists
This isn't just a programming thing. It's a thinking thing.
Lilian Weng's research on reasoning systems shows that deliberate, step-by-step reasoning — what Kahneman calls System 2 thinking — is fundamentally harder than intuitive pattern-matching. Your brain wants to trace the recursion because tracing feels like understanding. But tracing a recursive function is System 1 trying to brute-force a System 2 problem.
The leap of faith IS the System 2 skill. You're not skipping the proof — you're using without realizing it:
- Base case works. (You can check this — it's one line.)
- If the recursive call works for smaller input, the current call works. (This is the leap.)
- Therefore it works for all inputs. (That's induction.)
You don't need to trace fib(5) through eight stack frames to trust it. You need to verify two things: the base case is right, and if fib(n-1) and fib(n-2) return correct values, then fib(n-1) + fib(n-2) is correct too.
Unlock the full guide
Complete walkthrough, diagrams, and practice problems — all included with StrongYes Pro.
Unlock with ProThis is how Coco coaches at StrongYes — permission to be confused first, then a clear path through. Try a session →
Practice Recursion.
Explain your thinking like you're in the interview.
Sources:
- Evans, J. "Patterns in confusing explanations" (2021) — on why technical concepts feel harder than they are
- Kladov, A. "Primitive Recursive Functions For A Working Programmer" (2024) — on why real recursion is safer than theory suggests
- Weng, L. "Why We Think" (2025) — on System 1 vs System 2 reasoning and deliberate thought
Fin and Coco are StrongYes editorial personas from the Council of Ternary Vertices — a trinary-star animal civilization that studies Earth's coding-interview process. Anecdotes map animal-universe experience to human interview mechanics; they are NEVER human-career claims. External citations link to public primary sources.
Julia Evans on confusing explanations, matklad on primitive recursive functions, Lilian Weng on deliberate reasoning
Last verified Apr 12, 2026.
Practice Recursion.
Reading builds recognition. Explaining builds recall. Run these problems with Fin or Coco.