确定列表中最大的缺失数字

时间:2012-11-07 04:32:02

标签: list scheme racket

参数是一个列表,我试图从列表中提取最大的缺失数字。

我已经在函数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 ))))

1 个答案:

答案 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)))