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
Teaching recursion in a procedural environment—how much should we emphasize the computing model?
SIGCSE '99 The proceedings of the thirtieth SIGCSE technical symposium on Computer science education
A Transformation System for Developing Recursive Programs
Journal of the ACM (JACM)
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
The case of base cases: why are they so difficult to recognize? student difficulties with recursion
Proceedings of the 7th annual conference on Innovation and technology in computer science education
WinHIPE: an IDE for functional programming based on rewriting and visualization
ACM SIGPLAN Notices
A gentle introduction to mutual recursion
Proceedings of the 13th annual conference on Innovation and technology in computer science education
Hi-index | 0.00 |
The design of many tail recursive algorithms can involve thinking about the status of variables and parameters, and how these change with execution flow. In other words, tail recursion is closely related to iteration and imperative programming. However, it is possible to derive tail recursive functions by exclusively using concepts inherent in recursion, such as declarative programming, induction, or problem decomposition. This paper proposes a simple methodology for designing tail recursion functions by using a declarative approach and the concept of function generalization. We have carried out an evaluation of the technique with second and third-year computer science students. Results suggest that this new point of view improves students' ability to design tail recursive programs, helps them understand the distinction between the imperative and declarative paradigms, and may reinforce their programming skills in general. Furthermore, students found the methodology easy to learn and apply, simpler than more sophisticated formal methods, and described it as fast and methodic or mechanical, as it involves a sequence of well-defined steps.