1
私は、指定されたリスト内のすべての数値を2乗するようにしたい。また、 の要素がリストの場合、関数は再帰的に適用され、そのリストも。Racket:リスト上のテール再帰は逆のリストを出力する
これは私のコードです:
(define (sqr-up-rec-tail lst)
(define (helper lst newlist)
(if (null? lst) newlist
(if (list? (car lst))
(helper (cdr lst) (cons (sqr-up-rec-tail (car lst)) newlist))
(helper (cdr lst) (cons (* (car lst) (car lst)) newlist)))))
(helper lst()))
My機能は動作しますが、しかし、私は逆の二乗のリストを取得します。例えば 、私が実行すると
(SQRアップREC-尾「(2 4 6(10 20)))
Iが得る出力である:
((400 100)36 16 4)
私は外部のリバース機能を使用してずに右出力を取得したいです。私の推測では、私はそれを働かせることはできませんでしたが、私は短所の代わりに追加を使用する必要があります。
ありがとうございました。
単に '... if(null?新しいリスト...) '' ... if(null?lst)(リバースnewlist)... '。 – Renzo
@Renzo「外部リバース機能を使用せずに*正しい出力を得たい」 – Dul