diff --git a/README.md b/README.md index c2e235e..f22f497 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,14 @@ # Recursion Problems ## Definitions -Define the following: +Define the following: -- Recursion -- Recursive Case -- Base Case -- Activation Chain/Stack -- Activation Record/Call -- Infinite Recursion/Stack Overflow/Stack too deep +- Recursion - Recursion is when a method calls itself (opposite of iterative). +- Recursive Case - The recursive case is what keeps the method going. +- Base Case - The base case of a recursive method is the stopping case - if it were not reached, the recursion would go on forever. There can be more than one base case. +- Activation Chain/Stack - the process of a recursive method as it is executed. Can be diagrammed with Crystal's bubble notation. +- Activation Record/Call - keeps track of values as the recursive method executes. +- Infinite Recursion/Stack Overflow/Stack too deep - Infinite recursion happens when a method never reaches a base case. The recrusion keeps going forever and results in error messages like "Stack Overflow" or "Stack too deep". - Tail Recursion ## Tracing through a recursive method @@ -24,9 +24,9 @@ def mystery1(n) end ``` -- What is mystery1(5)? -- What is mystery1(10)? -- What is mystery1(0)? +- What is mystery1(5)? 15 +- What is mystery1(10)? 55 +- What is mystery1(0)? Infinite recursion/Stack level too deep ### Trace #2 ``` @@ -39,9 +39,9 @@ def mystery2(n) end ``` -- What is mystery2(123)? -- What is mystery2(9005)? -- What is mystery2(-123)? +- What is mystery2(123)? 6 +- What is mystery2(9005)? 14 +- What is mystery2(-123)? -123 - _Added Fun: How could we make `mystery2(-123)` work the way we might expect it to work instead of the way it does?_ ### Trace #3 @@ -60,9 +60,9 @@ def mystery3(n) end ``` -- What is mystery3(1)? -- What is mystery3(13)? -- What is mystery3(-6)? +- What is mystery3(1)? 100 +- What is mystery3(13)? 100 +- What is mystery3(-6)? 200 ### Trace #4 ``` @@ -75,9 +75,9 @@ def mystery4(b,e) end ``` -- What is mystery4(10,2)? -- What is mystery4(4,3)? -- What is mystery4(5,0)? +- What is mystery4(10,2)? 100 +- What is mystery4(4,3)? 64 +- What is mystery4(5,0)? 1 ### Trace #5 ``` @@ -90,9 +90,9 @@ def mystery5(s) end ``` -- What is mystery5("hi")? -- What is mystery5("")? -- What is mystery5("Hi, there!")? +- What is mystery5("hi")? "**" +- What is mystery5("")? "" +- What is mystery5("Hi, there!")? "**********" - _Added Fun: How could we make only alphabetic characters to be changed to stars?_ ### Trace #6 @@ -110,7 +110,7 @@ def mystery6(s) end ``` -- What is mystery6("goodnight moon")? -- What is mystery6("Ada Developers Academy")? -- What is mystery6("Hi, there!")? +- What is mystery6("goodnight moon")? " moon goodnight" +- What is mystery6("Ada Developers Academy")? " Academy Developers Ada" +- What is mystery6("Hi, there!")? " there! Hi," - _Added Fun: How could we make the reversal happen by letter, instead of by word (i.e. Make it so that mystery6("goodnight moon") returned "noom thgindoog")?_