Skip to content
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: 32 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,12 +4,19 @@
Define the following:

- Recursion
- When the result of a method dependes on the result of the same method but called with a smaller case. You know you have a recrusive method if the method calls its self
- Recursive Case
- The expression of code where the method is calling its self

Choose a reason for hiding this comment

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

"expression of code" is a weird term to me. Your idea is right, but seems like strange wording to me.

- Base Case
- the expression of code where the recursion stops
- Activation Chain/Stack
- A recurive method has to keep track of each instance the method is being called - the function does this with stack that holds each instantiation.
- Activation Record/Call
- An activation record is an individual "item" in the activation stack
- Infinite Recursion/Stack Overflow/Stack too deep
- When the recrusive method will never reach the base case - it will go one forever/computer will error cause it doesn't have enough memory to keep track of all the times the method has been called. - IE the Activation Stack is too large for the computers memory
- Tail Recursion
- normally every recurive call has to complete before the method begins to do work to find the result - in tail recursion the end result is being updated with each new instantiation

## Tracing through a recursive method

Expand All @@ -24,10 +31,13 @@ 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 - will never reach base-case
### Trace #2
```
def mystery2(n)
Expand All @@ -40,9 +50,13 @@ 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?_
- Depends on if we want -123 to be -1 + 2 + 3 or - (1 + 2 + 3). Either case we need to add a condition that checks to see if the integer passed is negative - if true, than decided if we should take the absolute value - run the method and at the end make it negative again

Choose a reason for hiding this comment

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

Excellent observation!! I'd want the latter, but wanted ambiguity to see what people would consider and assume.


### Trace #3
```
Expand All @@ -61,8 +75,11 @@ end
```

- What is mystery3(1)?
- 100
- What is mystery3(13)?
- 100
- What is mystery3(-6)?
- 200

### Trace #4
```
Expand All @@ -76,8 +93,12 @@ end
```

- What is mystery4(10,2)?
- 10^ 2 = 100
- What is mystery4(4,3)?
- 4^3 = 64
- What is mystery4(5,0)?
- 5^0 = 1
- NOTE: I did trace the recursions and at the end noticed the pattern of b^e :)

Choose a reason for hiding this comment

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

:)


### Trace #5
```
Expand All @@ -91,9 +112,14 @@ end
```

- What is mystery5("hi")?
"**"
- What is mystery5("")?
""

- What is mystery5("Hi, there!")?
"**********" (10 - * characters)
- _Added Fun: How could we make only alphabetic characters to be changed to stars?_
Add a condition that checks each value by index. if it's a alpha character, then the values only becomes a *

### Trace #6
```
Expand All @@ -111,6 +137,9 @@ end
```

- What is mystery6("goodnight moon")?
- " moon goodnight"
- What is mystery6("Ada Developers Academy")?
- " Academy Developers Ada"
- What is mystery6("Hi, there!")?
- " there! Hi,"

Choose a reason for hiding this comment

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

minor, but notable: there should be leading spaces at the front of each of these answers: " moon goodnight", " Academy Developers Ada", " 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")?_