Explaining recursion to the unsophisticated
ACM SIGCSE Bulletin
Conceptual models and cognitive learning styles in teaching recursion
SIGCSE '98 Proceedings of the twenty-ninth SIGCSE technical symposium on Computer science education
Recursion in gradual steps (is recursion really that difficult?)
Proceedings of the thirty-first SIGCSE technical symposium on Computer science education
Problems in comprehending recursion and suggested solutions
Proceedings of the 6th annual conference on Innovation and technology in computer science education
Using visualization to teach novices recursion
Proceedings of the 6th annual conference on Innovation and technology in computer science education
Exploring recursion with fibonacci numbers
Proceedings of the 12th annual SIGCSE conference on Innovation and technology in computer science education
WinHIPE: an IDE for functional programming based on rewriting and visualization
ACM SIGPLAN Notices
ITiCSE '09 Proceedings of the 14th annual ACM SIGCSE conference on Innovation and technology in computer science education
Analysis of research into the teaching and learning of programming
ICER '09 Proceedings of the fifth international workshop on Computing education research workshop
Tail recursive programming by applying generalization
Proceedings of the fifteenth annual conference on Innovation and technology in computer science education
Automatically refining partial specifications for heap-manipulating programs
Science of Computer Programming
Hi-index | 0.00 |
Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, it is generally addressed superficially in CS1/2 programming courses and textbooks. We show that, when a problem is approached appropriately, not only can mutual recursion be a powerful tool, but it can also be easy to understand and fun. This paper provides several intuitive and attractive algorithms that rely on mutual recursion, and which have been designed to help strengthen students' ability to decompose problems and apply induction. Furthermore, we show that a solution based on mutual recursion may be easier to design, prove and comprehend than other solutions based on direct recursion. We have evaluated the use of these algorithms while teaching recursion concepts. Results suggest that mutual recursion, in comparison with other types of recursion, is not as hard as it seems when: (1) determining the result of a (mathematical) function call, and, most importantly, (2) designing algorithms for solving simple problems.