我希望我的函数能够对给定列表中的每个数字进行平方,而且,如果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