SICP Exercise 2.19-

2.22
(define (for-each2 proc items)
  (proc (car items))
  
  (if (null? (cdr items))
      (newline)
      (for-each2 proc (cdr items))
      )
  
  )
2.21
(define (square-list3 items)
  (define (iter things answer)
    (if (null? things)
        answer
        (iter (cdr things)
              ( append  answer (list(square (car things)))
                    )
              ))
    )
  (iter items ())
  )

2.20
(define (square-list1 items)
  (if (null? items)
      ()
      (cons (* (car items) (car items) ) (square-list1 (cdr items)))
      )
  )
(define (square-list2 items)
  (map (lambda (x) (* x x)) items )
  )

2.19
(define us-coins (list 50 25 10 5 1))
(define uk-coins (list 100 50 20 10 5 2 1 0.5))

(define (cc amount coin-values)
  (cond ((= amount 0) 1)
        ((or (< amount 0) (null? coin-values)) 0)
        (else
         (+ (cc amount
                (except-first-denomination coin-values))
            (cc (- amount
                   (first-denomination coin-values))
                coin-values
                )
            ))
        )
  )

(define (first-denomination items)
   (car items)
  )

(define (except-first-denomination items)
  (cdr items)
  )

(cc 100 us-coins)
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章