Ich versuche, eine Liste (BST, ein binärer Suchbaum) von einer Methode zurückzugeben, die doppelte Rekursion hat. Ich versuche es wie folgt umzusetzen:Rückgabeliste mit Rekursion mit Racket
(define (mapBST BST someFunct)
(cond
[(null? BST)
'()]
[else (cons (car BST) (someFunct (car (cdr BST)))) (mapBST (car (cdr (cdr BST))) someFunct) (mapBST (car (cdr (cdr (cdr BST)))) someFunct) ]
)
)
Das mit diesem kleinen Code-Schnipsel
(define bst
'(3 "3"
(1 "1"
()
(2 "2"()())
)
(5 "5"()())
)
)
(mapBST bst string->number)
Ich habe auch versucht, diese Schnipsel aufgerufen wird, aber es zurück ((()())())
:
[else (printf (car (cdr BST))) (cons (mapBST (car (cdr (cdr BST))) someFunct) (mapBST (car (cdr (cdr (cdr BST)))) someFunct)) ]
Die Ergebnis sollte die gleiche BST zurückgeben, aber mit Nummer anstelle von String als Wert.
Zeigen Sie den Code, den Sie anrufen, was er produziert und was Sie erwartet haben. Den Code richtig einrücken und jeden Unterausdruck in einer neuen Zeile beginnen. Hinweis: in '[else A B C]' haben 'A' und' B' keine Wirkung - ihre Werte werden ignoriert, nur der letzte Wert wird zurückgegeben. –