;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; U. C. Berkeley ;; ;; EECS Computer Science Division ;; ;; CS3 Lecture 06 Answers ;; ;; (Recursion) ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; Mapping (every) Example : square-all (define (square x) (* x x)) (define (square-all s) (cond ((empty? s) '()) (else (se (square (first s)) (square-all (bf s)))))) (square-all '()) ;; ==> () (square-all '(1 2 3 4)) ;; ==> (1 4 9 16) ;; Finding Example : member-even (define (member-even s) (cond ((empty? s) #f) ((even? (first s)) s) (else (member-even (butfirst s))))) (member-even '()) ;; ==> #f (member-even '(1 2 3 4)) ;; ==> (2 3 4) (member-even '(1 3 5 7)) ;; ==> #f ;; Counting Example : count-evens (define (count-evens s) (cond ((empty? s) 0) ((even? (first s)) (+ 1 (count-evens (bf s)))) (else (count-evens (bf s))))) (count-evens '(1 2 3 4)) ;; ==> 2 (count-evens '(2 4 6 8)) ;; ==> 4 (count-evens '(1 3 5 7)) ;; ==> 0 ;; Filtering Example : remove-evens (define (remove-evens s) (cond ((empty? s) '()) ((even? (first s)) (remove-evens (bf s))) (else (se (first s) (remove-evens (bf s)))))) (remove-evens '()) ;; ==> () (remove-evens '(1 2 3 4)) ;; ==> (1 3) (remove-evens '(2 4 6 8)) ;; ==> () (remove-evens '(1 3 5 7)) ;; ==> (1 3 5 7) ;; Testing example : all-evens? (define (all-evens? s) (cond ((empty? s) #t) ((even? (first s)) (all-evens? (bf s))) (else #f))) (all-evens? '()) ;; ==> #t (all-evens? '(1 2 4 8)) ;; ==> #f (all-evens? '(2 4 6 8)) ;; ==> #t (all-evens? '(1 3 5 7)) ;; ==> #f ;; Combining example : get-min (define (get-min s) (cond ((null? (bf s)) (first s)) (else (min (first s) (get-min (bf s)))))) (get-min '(795)) ;; ==> 795 (get-min '(3 1 4 1)) ;; ==> 1 (get-min '()) ;; ==> ERROR, Invalid arg