# Problem with recursion? (was [plt-scheme] Re: Novice needs help writing function )

>* I recently heard that a particular teacher quit trying to teach
*>* recursion because "it is too hard for students to understand".
*>*
*>* Is there an epidemic of sorts that students don't understand recursion?
*>*
*>* What are the challenges to understanding recursion?
*>* _________________________________________________
*
There is nothing inherently hard about teaching recursion or having
students understand recursion if it is done right and _before_
teaching iteration with assignment. IMHO, if you follow the design
recipe and the "shape of the data tells you the shape of your program"
principle you really get recursion for free (i.e. it just comes
natural). If students never "learn" that a function calling itself is
"weird" or "hard to design," students usually do not get stuck with
it. The important thing is that students can see that there is a
structure that a program follows.
In my experience, the biggest problem I have seen others have is that
they bang iteration and assignment into students head and then
students instinctively reach for assignment to solve every problem.
These students do not have the benefit of understanding the connection
between tail-recursion and iteration. These students are focusing much
more on trying to put statements in the right order rather than
solving the problem at hand.
Finally, starting with recursion on an integer is IMHO a poor way to
start. For me, it is much easier to introduce recursion when working
with compound data like lists and trees. Students seem to have less
trouble at the beginning with this type of data for resursion than
with a range of numbers represented by a single integer.
Cheers,
Marco