Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Homework completed #23

Open
wants to merge 1 commit into
base: master
Choose a base branch
from
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
35 changes: 34 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,22 @@
# Recursion Problems

## Definitions
Define the following:
Define the following:

- Recursion
- Recursion describes a method that calls itself.
- Recursive Case
- A recursive case is the part of the method where recursion occurs.
- Base Case
- Base case returns a value without making a recursive call. This is what recursive cases should be bringing us closer to.
- Activation Chain/Stack
- An Activation chain/stack is the entire process of solving the recursive method and getting the appropriate answer.
- Activation Record/Call
- An activation record/call is each little "bubble" within the activation chain. I take that to mean that an activation record occurs each time a recursive case occurs within an activation chain.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Correct.

- Infinite Recursion/Stack Overflow/Stack too deep
- Infinite recursion occurs when the recursive cases are not leading to a base case.
- Tail Recursion
- Tail recursion occurs when the last computation within a method is a recursive call. All our recursive methods from the homework are examples of Tail recursion.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

None of our examples in the homework are of Tail Recursion.

I didn't actually have time to cover tail recursion in class. I may in the future, but in this moment you don't need to know it.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

WAIT! I LIEEEEEEEE! There is a tail recursive one. Namely: mystery3


## Tracing through a recursive method

@@ -25,8 +32,12 @@ end
```

- What is mystery1(5)?
- 15
- What is mystery1(10)?
- 55
- What is mystery1(0)?
- stack level too deep
Meaning: The number and all of the numbers before it added together. Example: mystery1(5) = 5 + 4 + 3 + 2 + 1 = 15

### Trace #2
```
@@ -40,9 +51,14 @@ 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?_
- Set the following condition: if n==0, return n
Meaning: All of the separate digits of the number added together. Example: mystery2(123) = 1 + 2 + 3 = 6

### Trace #3
```
@@ -61,8 +77,11 @@ end
```

- What is mystery3(1)?
- 100
- What is mystery3(13)?
- 100
- What is mystery3(-6)?
- stack level too deep (checked my answer and found out I had it wrong. Worked on it until I got the correct answer: 200)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

:)


### Trace #4
```
@@ -76,8 +95,12 @@ end
```

- What is mystery4(10,2)?
- 100
- What is mystery4(4,3)?
- 64
- What is mystery4(5,0)?
- 1
Meaning: b^e Example: mystery4(10,2) = 10^2 = 100

### Trace #5
```
@@ -91,9 +114,14 @@ 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?_
- Use regex to check the char type.
Meaning: All chars in string replaced with *

### Trace #6
```
@@ -111,6 +139,11 @@ 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")?_
- I am not sure. :(

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

That's fine. It was only a challenge question :)

Meaning: All words in the string are reversed in order and a space is added in the front
108 changes: 55 additions & 53 deletions mystery-methods.rb
Original file line number Diff line number Diff line change
@@ -1,57 +1,59 @@
def mystery1(n)
puts n
if n == 1
return n
else
return n + mystery1(n-1)
end
end
# def mystery1(n)
# puts n
# if n == 1
# return n
# else
# return n + mystery1(n-1)
# end
# end

def mystery2(n)
if n < 10
return n
else
return (n%10) + mystery2(n/10)
end
end
# def mystery2(n)
# if n < 10
# return n
# else
# return (n%10) + mystery2(n/10)
# end
# end
#
# 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

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
#
# def mystery4(b,e)
# if e == 0
# return 1
# else
# return b * mystery4(b,e-1)
# end
# end

def mystery4(b,e)
if e == 0
return 1
else
return b * mystery4(b,e-1)
end
end
#
# def mystery5(s)
# if s.length == 0
# return ""
# else
# return "*" + mystery5(s[1..-1])
# end
# end

def mystery5(s)
if s.length == 0
return ""
else
return "*" + mystery5(s[1..-1])
end
end

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
# 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

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm unsure if you did anything to this file or not. Github is confusing me. :/