我使用带有列表缩写的开头语言
我希望我的程序要做的就是消耗BST(课程)和自然数(上限)并生成课程 这是完整的。如果课程中至少有学生注册
,则认为课程已满这是我到目前为止所做的:
BST为空或
(make-node Nat (listof Nat) BST BST),
以递归方式满足排序属性:
左边的每个course-id都小于course-id
右边的每个course-id都大于course-id
要求:
10000< course-id< = 99999
studlist中的每个元素都在100000000和999999999之间
包含,代表
学生的ID参加课程。
(define-struct node (key val left right))
辅助函数,用于计算班级中学生的数量:
(define (count-students alist)
(cond
[(empty? alist) 0]
[(cons? (car alist))(+(count-students(car alist))
(count-students(cdr alist)))]
[else(+ 1(count-students(cdr alist)))]))
主要功能:
(define (count-full-courses courses cap)
(cond
[(empty? courses)0 ]
[else (cond
[(or (=(count-students(node-val courses))cap)
(>(count-students(node-val courses))cap))(add1(+
(count-full-courses (node-left courses)cap)
(count-full-courses (node-right courses)cap)))]
应该发生什么的例子:
(define c89761 (make-node 89761 (list 987654321 673498453 237622334) empty empty))
(define c99800 (make-node 99800 (list 673498453 673498453 876542334 777777777)empty empty))
(define c99500 (make-node 99500 (list 987654321 673498453 673498453 876542334)empty c99800))
(define c99999 (make-node 99999 (list 987654321 673498453 444444444)c99500 empty))
(define DB (make-node 99065 (list 123456789 987654321 673498453 876542334)c89761 c99999))
(count-full-courses DB 4) should produce 3
答案 0 :(得分:0)
没关系我弄清楚了,我只需要更多基础案例。