2017-04-26 14 views
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)

私は外部のリバース機能を使用してずに右出力を取得したいです。私の推測では、私はそれを働かせることはできませんでしたが、私は短所の代わりに追加を使用する必要があります。

ありがとうございました。

+0

単に '... if(null?新しいリスト...) '' ... if(null?lst)(リバースnewlist)... '。 – Renzo

+0

@Renzo「外部リバース機能を使用せずに*正しい出力を得たい」 – Dul

答えて

関連する問題