0

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

我已经对函数中的列表进行了排序select,但是我很难让函数select返回排序后的列表。当列表从排序返回时,我减去最高和第二高以确定差异并检查差异是否大于 1。

有人可以让我知道如何将排序列表从 Selected 返回到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 ))))
4

1 回答 1

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)))
于 2012-11-07T12:15:39.147 回答