Recursion is a powerful programming technique. A function that calls itself recursively not only saves programming effort and avoids repetition but it can also be used to navigate complex structures such as Trees and Class Hierarchies.This is an intermediate-to-advanced level course. It is aimed at programmers who can already program confidently in one or more programming languages. It is not appropriate for beginners.The courses includes numerous short sample programs to show how recursion works. There are samples written in C, Ruby and C#. However, you dont need to program in those languages to follow this course. Recursion works the same way in all mainstream programming languages. This course explains the theory and the practice of recursion. You can use the techniques that are taught to write recursive functions in whichever language you prefer: C, C#, Java, JavaScript, Python, Basic, Pascal and others. The course is not about any specific language. This is what you will learnWhat is recursion?How variables are scoped in recursive functionsHow recursive functions return valuesThe Stack and Stack FramesDebugging recursive functionsRecursion v IterationStack Corruption, and how to avoid itInfinite Recursion, and how to avoid itRecursing Fibonacci NumbersRecursing a Class HierarchyTrees and recursionNavigating subdirectories recursively