From 553dd8b8dae9e83c3199b5ad9dd3d78e54c4c1f9 Mon Sep 17 00:00:00 2001 From: Jackie Watanabe Date: Mon, 27 Mar 2017 05:10:36 -0700 Subject: [PATCH] created txt file with answers --- jackies-answers.txt | 116 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 116 insertions(+) create mode 100644 jackies-answers.txt diff --git a/jackies-answers.txt b/jackies-answers.txt new file mode 100644 index 0000000..302f250 --- /dev/null +++ b/jackies-answers.txt @@ -0,0 +1,116 @@ +# Recursion Problems + +## Definitions +Define the following: + +- Recursion - when a method calls itself +- Recursive Case - the case that includes a version of itself +- Base Case - stopping case -- the case that has a known answer +- Activation Chain/Stack -> all the levels of each time a recursive method is called until it hits the base case. +- Activation Record/Call -> the temporary storage for each level of recursion +- Infinite Recursion/Stack Overflow/Stack too deep -> when a case goes on forever +- Tail Recursion -> a recursive method with an end + +## Tracing through a recursive method + +### Trace #1 +``` +def mystery1(n) + if n == 1 + return n + else + return n + mystery1(n-1) + end +end +``` + +- What is mystery1(5)? --> 15 +- What is mystery1(10)? --> 55 +- What is mystery1(0)? stack level too deep + +### Trace #2 +``` +def mystery2(n) + if n < 10 + return n + else + return (n%10) + mystery2(n/10) + end +end +``` + +- 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 +``` +def mystery3(n) + if n == 0 + return 100 + elsif n == -1 + return 200 + end + if n%2 == 0 + return mystery3(n/2) + else + return mystery3(n-1) + end +end +``` + +- What is mystery3(1)? --> 100 +- What is mystery3(13)? --> 100 +- What is mystery3(-6)? --> 200 + +### Trace #4 +``` +def mystery4(b,e) + if e == 0 + return 1 + else + return b * mystery4(b,e-1) + end +end +``` + +- What is mystery4(10,2)? --> 100 +- What is mystery4(4,3)? --> 64 +- What is mystery4(5,0)? --> 1 + +### Trace #5 +``` +def mystery5(s) + if s.length == 0 + return "" + else + return "*" + mystery5(s[1..-1]) + end +end +``` + +- 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 +``` +def mystery6(s) + if s == nil || s.length == 0 + return "" + else + space = 0 + until space >= s.length || s[space] == " " + space += 1 + end + return mystery6(s[(space+1)..-1]) + " " + s[0...space] + end +end +``` + +- 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")?_