Functional Problem Solving (CSC 151 2013F) : EBoards

Extra topics, Week 09


Overview

Admin

What might be on the quiz?

Box-and-Pointer Diagrams

Recursion over Trees

A slightly more complex pattern

(define proc
  (lambda (tree)
    ; Recursive case: It's a cons-cell/pair/node: Recurse on
    ; both halve, then do something with the result
    (if (pair? tree)
        (combine (proc (car tree))
                 (proc (cdr tree)))a
        (base-case tree))))

An example that was almost on the quiz: Count how many times a value appears in the tree

(define tree-tally
  (lambda (tree value)
    (if (pair? tree)
        (+ (tree-tally (car tree) val)
           (tree-tally (cdr tree) val))
        (if (equal? value tree) 1 0))))

Emptiness

Review vectors vs. lists

What is more valuable, programmer time or computer time?


Samuel A. Rebelsky, rebelsky@grinnell.edu

Copyright (c) 2007-2013 Janet Davis, Samuel A. Rebelsky, and Jerod Weinman. (Selected materials are copyright by John David Stone or Henry Walker and are used with permission.)

Creative Commons License

This work is licensed under a Creative Commons Attribution 3.0 Unported License. To view a copy of this license, visit http://creativecommons.org/licenses/by-nc/3.0/ or send a letter to Creative Commons, 543 Howard Street, 5th Floor, San Francisco, California, 94105, USA.