이중 재귀가있는 메서드에서 목록 (BST, 이진 검색 트리)을 반환하려고합니다. 나는 다음과 그것을 구현하기 위해 노력하고 있습니다 :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) ]
)
)
이것은 내가이 조각을 시도
(define bst
'(3 "3"
(1 "1"
()
(2 "2"()())
)
(5 "5"()())
)
)
(mapBST bst string->number)
코드의이 작은 조각으로 호출되는하지만 ((()())())
반환
[else (printf (car (cdr BST))) (cons (mapBST (car (cdr (cdr BST))) someFunct) (mapBST (car (cdr (cdr (cdr BST)))) someFunct)) ]
을 결과는 동일한 BST를 반환해야하지만 string 대신 숫자를 값으로 사용합니다.
은 호출중인 코드, 생성 된 코드 및 생성하려고 한 코드를 보여줍니다. 새 줄에서 각 하위 표현식을 시작하여 코드를 올바르게 들여 쓰기하십시오. 힌트 :'[else A B C]','A'와'B'는 아무런 효과가 없습니다. 그 값은 무시되고, 마지막 값만이 반환됩니다. –