设计功能数据定义

时间:2013-02-04 17:27:42

标签: scheme racket

; A list-of-images is either   
; empty      
;    or       (cons n lon),
; where n is an image and lon is a list-of-images.

你将如何开发一个消耗图像列表并返回所有图像高度之和的函数height-total?我很迷惑。你可以使用函数image-height吗?

2 个答案:

答案 0 :(得分:3)

解决方案自然地作为递归过程;因为这看起来像家庭作业我会让你弄清楚细节,当然你必须使用image-height程序:

(define (height-total list-of-images)
  (if <???>                      ; if the list is empty
      <???>                      ; then what's the height sum of an empty list?
      (+ (image-height <???>)    ; else add the height of the first image and
         (height-total <???>)))) ; advance recursion to the rest of the list

请注意,此列表以及列表上的许多其他问题的解决方案遵循相同的基本递归结构,我建议您仔细查看How to Design ProgramsThe Little Schemer以更好地了解如何解决这类问题。

答案 1 :(得分:0)

使用球拍:

(for/sum ([image image-list])
  (image-height image))

(foldl (lambda (image sum) (+ (image-height image) sum))
       0 image-list)

(apply + (map image-height image-list))