我希望我的函數能夠對給定列表中的每個數字進行平方,而且,如果lst中的 元素是列表,則該函數將遞歸應用於該元素並對元素進行操作該名單也是如此。球拍:列表上的尾遞歸輸出反向列表
這是我的代碼:
(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()))
我的函數的工作,但是,我得到一個相反的平方列表。 例如,當我運行:
(SQR-UP-REC-尾「(2 4 6(10 20)))
輸出I得到的是:
((400 100)36 16 4)
我想用的外部反向功能以獲得正確的輸出而不。我的猜測是,我應該使用append而不是cons,儘管我沒有得到它的工作。
謝謝。
只需更改'... if(null? lst)newlist ...'in'... if(null?lst)(reverse newlist)...'。 – Renzo
@Renzo「我想在沒有使用外部反向功能的情況下獲得正確的輸出。」 – Dul