Recursion Brain: A Review Two Weeks Later
#datastructures #recursion #devstudy #algorithmns
Characteristics of a Recursive Problem
- Can the problem be broken down into a smaller version of itself?
- Can I re-use the solution to solve the problem?
- Do I have an abstracted solution that already exists??
THE PROCESS: DO NOT SKIP STEPS you will regret it
1. What is the simplest input? This is your base case. There might be more than one.
2. Visualize the Problem Without Words. Find the smallest subproblem and focus ONLY on the sub-problem.
– do not think about the implementation beyond the subproblem
3. What is the relationship between the Second-To-Last to Last Case? If I am given the answer for the Second-To-Last case, can I find the Last Case? Can I solve?
4. Generalize the pattern: This is your recursive function.
5. Trust the abstraction. If the logic is sound, solving the sub problem will solve the problem.
MISTAKES I KEEP MAKING
- Breaking the Problem using syntax short cuts to express my thoughts and letting this draw me into assumption patterns without consciously realizing the pull.
What to do: Visualize the problem WITHOUT WORDS. Just do it.
- Thinking too much about the implementation in the rest of the problem instead of trusting that the recursion will work if the logic for the subproblem is sound.
What to do: Set a timer and spent 80% of time on thinking.
- Not spending enough time visualizing different examples.
What to do: See 1.
- Not trust that my logic IS sound and seeing all errors are evidence that there is a fundamental misunderstanding of the problem rather than realizing that sometimes, it's IS an implementation error.
What to do: Build more confidence by listening to positive feedback without immediately dismissing it. Spend more time coding so I know the idiosyncrasies of the language better.
- Implementation Errors: Going too fast to notice incorrect assumptions of what I am asking CREATOR to do.
What to do: More puts, debug line by line. Go slower....