---
title: Eboard 18  Recursion basics lab
number: 18
section: eboards
held: 2017-10-04
---
CSC 151.01, Class 18:  Recursion basics lab
===========================================

_Overview_

* Preliminaries
    * Notes and news
    * Upcoming work
    * Extra credit
    * Questions
* Lab
* Debrief

### News / Etc.

* New partners.  
* Please make sure to return your computer cards to the jar.
* [Exam 2](../exams/exam02) distributed.  We'll talk about it in a few
  minutes.
* It appears that some of you have ignored the instructions and have
  decided that the appropriate approach to homework is to say things
  like "You solve problems 1-3 and I'll solve problem 4-5".  So, I'll
  make it easy for you: If I find out you've done that, you get a zero
  on the homework.
* Note that the graders do want to run your programs.  If they cannot
  just load the code you've provided into DrRacket, you will likely
  lose significant numbers of points.
* You did have an obligation to show your work on problem 4.  The
  following is unacceptable.
    *  I pick “there”, “was”, and “has” to check the common connections in different files. I found through the order of the high frequency words change, the results have lots of same words. For example, after the word “was”, “to”, “a” “the”, and “that” have appeared in most of the following-word. after the word “there”, “was” and “a” are most frequently appeared. 
* I still have not had time to grade your quizzes.  You may get them back
  on Friday.
* Please discuss which switching format you and your partner will use
    * Switch every ten minutes
    * Switch midway through class
    * Switch every problem

### Upcoming Work

* No writeup for class 16.
* No writeup for class 17.
* [Writeup for class 18](../writeups/writeup18) due Friday at 10:30 p.m.
    * Exercise 7
    * To: <csc151-01-grader@grinnell.edu>
    * Subject: CSC 151.01 Writeup 18 (YOUR NAMES)
* Reading for Friday's class: [Recursion with helper procedures](../readings/helper-recursion)
    * Not yet ready.
* Exam 2 prologue due Friday at 10:30 p.m.
* Exam 2 due Tuesday at 10:30 p.m..
* Exam 2 cover sheets due Wednesday at the start of class
* Exam 2 epilogue due Wednesday at 10:30 p.m.

### Extra credit (Academic/Artistic)

* TODAY, 5pm, Mary Beth Tinker Talk
* Thursday evening movie about survivor's experiences

### Extra credit (Peer)

* Men's Soccer vs. Cornell Wednesday at 4:30
* Volleyball vs. Beloit, Friday at 7:00 p.m.
* Women's Tennis vs. St. Norbert, Saturday at 9:00 a.m.
* Volleyball vs. Lake Forest, Saturday at 1:00 p.m.
* Women's Tennis vs. Ripon, Saturday at 3:00 p.m.
* Nice Fish.  This weekend.  Marvel at the lights.

### Other good things

* Football, Saturday at 1:00 p.m.
* Neverland Players, this weekend.

### Exam 2

* We'll go over the parts of the exam.

### Questions on the exam

On problem 1, can I use recursion?
  : Yes.  But you need not.  You could also use `map` and other stuff.

On problem 1, should the husk call the kernel?
  : Certainly.

Can I use recursion on problem 2?
  : No.  Use `map`.

Can I use recursion on problem 7?
  : No.  There is no problem 7.

### Homework 5

I used made-up books.  Should I fix that?
  : Yes.

Lab
---

```
> (+)
0
> (*)
1
; Ask yourself why

Is there a way to see what parameters our recursive procedure is
being called with?

```
(define proc
  (lambda (params)
    (write (list 'proc params)) (newline)
    ; The body follows
    ))
```

Debrief
-------

Your writeup is exercise 7.

```
(define my-length
  (lambda (lst)
    ; (display (list 'my-length lst)) (newline)
    (if (null? lst)
        0
        (+ 1 (my-length (cdr lst))))))

(define largest0
  (lambda (lst) 
    ; (display (list 'largest0 lst)) (newline)
    (if (= (my-length lst) 1)
        (car lst)
        (max (car lst) (largest0 (cdr lst))))))
; Whoops!  That does a lot of calls to `my-length`.

(define largest1
  (lambda (lst)
    ; (display (list 'largest1 lst)) (newline)
    (if (null? (cdr lst))
        (car lst)
        (if (> (car lst) (largest1 (cdr lst)))
            (car lst)
            (largest1 (cdr lst))))))
; Do you see any problems?  What if lst is organized largest to
; smallest?  What if lst is organized smallest to largest.

