二重再帰を持つメソッドからリスト(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'は効果がありません。それらの値は無視され、最後の値だけが返されます。 –