I have never met someone who took a year to understand recursion. If it is not grasped quickly then the student never reaches mastery at all. Many programmers read this website and so far not a single one has contested this claim.
Incidentally, I bounced off of CS for a couple years after getting a bad grade in my first CS class. But I bounced off because the class was too easy and therefore not worth time. Not because it was too hard.
I have never met someone who took a year to understand recursion.
I probably took much more, but that’s because I first heard about the concept (in Karel) when I was 10 years old. I kinda-understood the most simple implementation, but anything beyond that was too abstract for me. Then I didn’t need the concept for a few years. And then, maybe five years later, I finally understood it, but it still felt uncomfortable.
These days it feels obvious, and I guess the trick is that before I start writing the code, I write down an exact specification of what the function does—and that makes it easy to decide when calling the function with a smaller parameter is the right thing to do, and when something extra needs to be done. (Plus now I also think about tail recursion, which is usually the right thing to do.)
I feel like I have personally experienced of banging against a math concept for months before it clicks (that is, I’m not just guessing based on vague teacher’s passwords) but I can’t remember a specific example so perhaps you’re right.
I have never met someone who took a year to understand recursion. If it is not grasped quickly then the student never reaches mastery at all. Many programmers read this website and so far not a single one has contested this claim.
Incidentally, I bounced off of CS for a couple years after getting a bad grade in my first CS class. But I bounced off because the class was too easy and therefore not worth time. Not because it was too hard.
I probably took much more, but that’s because I first heard about the concept (in Karel) when I was 10 years old. I kinda-understood the most simple implementation, but anything beyond that was too abstract for me. Then I didn’t need the concept for a few years. And then, maybe five years later, I finally understood it, but it still felt uncomfortable.
These days it feels obvious, and I guess the trick is that before I start writing the code, I write down an exact specification of what the function does—and that makes it easy to decide when calling the function with a smaller parameter is the right thing to do, and when something extra needs to be done. (Plus now I also think about tail recursion, which is usually the right thing to do.)
General intelligence is still increasing at 10 years old. Simply getting older is sufficient to explain your experience.
I feel like I have personally experienced of banging against a math concept for months before it clicks (that is, I’m not just guessing based on vague teacher’s passwords) but I can’t remember a specific example so perhaps you’re right.
I was 12 or so when I first studied pointers. I did not get them at all back then.