参数是一个列表,我试图从列表中提取最大的缺失数字。
我已经在函数select
中对列表进行了排序,但是我很难让函数select
返回排序列表。当列表从排序中返回时,我减去最高和第二高以确定差异并检查差异是否大于1.
有人可以告诉我如何将已排序的列表从选定内容返回到LargestGap
吗?
(define (LargestGap L)
(cond ( (null? L) '() )
; ( car (select L))
( (> (- (car(cdr(select L))) (car(select L))) 0) (LargestGap (cdr(select L))))
(- (car(select L)) 1)))
(define (select L)
(cond ( (null? L) '() )
( else
(cons (Largest L (car L))
(select (delete L (Largest L (car L))))))))
(define (delete L A)
(cond ( (null? L) '() )
( (= (car L) A) (cdr L))
(else (cons (car L)(delete (cdr L) A)))))
(define (Largest L A)
(cond ( (null? L) A)
( (> (car L) A) (Largest (cdr L)(car L)))
(else (Largest (cdr L) A ))))
答案 0 :(得分:0)
我不确定我的问题是否正确。我想你想避免在select
函数中多次调用LargestGap
函数。如果这就是你的问题:
制作另一个功能:
(define (get-largest-gap L)
(LargestGap (select L)))
使函数LargestGap接受排序列表:
(define (LargestGap L)
(cond ( (null? L) '() )
( (> (- (cadr L) (car L)) 0) (LargestGap (cdr L)))
(- (car L) 1)))