Recursion is a technique in which a function or method calls itself before returning. Each call receives a new local scope, while self can remain the same object. section 5.2.3 section 16.4
A recursive routine needs a terminal clause that returns a result instead of making another call. Without one, the routine continues indefinitely. Recursive calls can progressively reduce their arguments, as in Fibonacci numbers or the sum of squares. section 16.4
Separate local scopes during recursion
A method can call itself with a different argument without changing the caller's local variable. In C#x, the recursive call prints "Second value for a", then the original call resumes and prints "First value for a"; both calls retain the same self.






















