2012-11-07 39 views
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)))) 

回答

0

我不知道我是否正確地得到了您的問題。我想你想避免在LargestGap函數中多次調用select函數。如果這是你的問題是什麼,然後:

進行其他功能:

(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)))