1 / 13

Midterm 1

Midterm 1. Midterm 1: Feb 28 th (next week). In the lecture slot, plus 20 minutes (4:10-5:30 pm, 120 Latimer) Everything we’ve covered, including this coming week on recursion. Review session Sunday, Oct 2nd, 1-3pm. 430 Soda (Wozniak lounge).

emckee
Télécharger la présentation

Midterm 1

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Midterm 1 • Midterm 1: Feb 28th (next week). • In the lecture slot, plus 20 minutes (4:10-5:30 pm, 120 Latimer) • Everything we’ve covered, including this coming week on recursion. • Review session Sunday, Oct 2nd, 1-3pm. 430 Soda (Wozniak lounge). • Email problem requests to Nate (nate@socrates.berkeley.edu). • Practice exam in reader (do this all at once) • Check Announcements for more practice items, solutions • Nate’s office hours on that Monday: 12-2, 329 Soda.

  2. Announcements • Recursion in Lab this week. Read Chapter 11 in the textbook before lab.

  3. How did the miniproject go?

  4. Recursion • Everyone thinks it's hard! • (well, it is… aha!-hard, not complicated-hard) • The first technique (in this class) to handle arbitrary length inputs. • There are other techniques, easier for some problems. • What is it?

  5. An algorithmic technique where a function, in order to accomplish a task, calls itself with some part of the task. ALL recursive procedures need: 1) Base Case (s) 2) Recursive Case (s) that 1) Divide the problem 2) Call the function (recursively) 3) Combine the solutions

  6. Problem: find the first even number insentence of numbers (if <test> (<do the base case>) (<do the recursive case>) (define (find-first-even sent) (if (even? (first sent)) (first sent) ;base case: return ; that even number (find-first-even (bf sent)) ;recurse on the ; rest of sent ))

  7. Problem: find all the even numbers insentence of numbers (define (find-evens sent) (cond ((empty? (bf sent)) ;base case (first sent) ) ((odd? (first sent)) ;rec case 1 (find-evens (bf sent)) ) (else ;rec case 2: even (se (first sent) (find-evens (bf sent))) ) )) (define (find-evens sent) (cond ( ;base case ) ( ;rec case 1: odd ) ( ;rec case 2: even ) ))

  8. Base cases can be tricky • By checking whether the (bf sent) is empty, rather than sent, we won't choose the recursive case correctly on that last element! • Or, we need two base cases, one each for the last element being odd or even. • Better: let the recursive cases handle all the elements Your book describes this well

  9. Problem: find all the even numbers insentence of numbers (define (find-evens sent) (cond ((empty? (bf sent)) ;base case (first sent) ) ((odd? (first sent)) ;rec case 1: odd (find-evens (bf sent)) ) (else ;rec case 2: even (se (first sent) (find-evens (bf sent))) ) )) (define (find-evens sent) (cond ((empty? sent ) ;base case '() ) ((odd? (first sent)) ;rec case 1: odd (find-evens (bf sent)) ) (else ;rec case 2: even (se (first sent) (find-evens (bf sent))) ) ))

  10. > (find-evens '(2 3 4 5 6)) sent = ( 2 3 4 5 6 ) (se 2 sent = ( 3 4 5 6 ) sent = ( 4 5 6 ) (se 4 sent = ( 5 6 ) sent = ( 6 ) (se 6 sent = ( ) () • (se 2 (se 4 (se 6 ()))) • (2 4 6)

  11. Why is recursion hard? • ONE function: • replicates itself, • knows how to stop, • knows how to combine the “replications” • There are many ways to think about recursion: you absolutely do not need to understand all of them. • Knowing recursion WILL help with all sorts of ways while programming, even if you don’t often use it.

  12. Sample Problem for Midterm 1: double Consider a procedure named double that, given a word as argument, returns a two-word sentence. The first word is two. The second word is the result of adding an "s" to the end of the argument.

  13. Now consider some incorrect implementations of double. For each one, indicate what the call (double 'apple) will return. If no value is returned because the procedure crashes, give the error message that results.

More Related