0

引数はリストであり、リストから欠落している最大の番号を抽出しようとしています。

関数でリストを並べ替えましたが、並べ替えられたリストを返すselect関数を取得するのに苦労しています。selectリストが並べ替えから戻ってきたら、最も高いものと2番目に高いものを差し引いて差を判別し、差が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 に答える