0

これは、人の名前とツリーが入力として与えられたときに、二分家系図 (ツリーには父親と 2 人の息子しかいない - bst) の子孫を見つけるスキーム プログラムです。ここでの主な問題は getons 関数だと思います。この関数は何に置き換えればよいですか?

(define (getfather FAMT)`
  (car FAMT)
   )


 (define (getson1 FAMT)
  (cadr FAMT)
 )

 (define (getson2 FAMT)
  (caddr FAMT)
 )

 (define (getsons FAMT)
 (cdr FAMT)
 )

 (define (empty? FAMT)
 (null? FAMT)
 )

(define (nosons? FAMT)
 (and (empty? (getson1 FAMT)) (empty? (getson2 FAMT)))
)

(define (getd FAMT)
 (cond ((empty? FAMT) '())
       ((nosons? FAMT) '())
       ((empty? (getson1 FAMT)) (getson2 FAMT))
       ((empty? (getson2 FAMT)) (getson1 FAMT))
       (else (getd (getsons FAMT))))
 )

(define (main1 person FAMT)
 (cond ((empty? FAMT) (getd '()))
       ((equal? person (getfather FAMT)) (getd FAMT))
       (else ( main1 person (getsons FAMT))))
 )



(define FAMT '(Pierce (Mark (Peter () ()) (Blaise () ())) (James () () )))

</code>
4

1 に答える 1