(define changeit (lambda (x) (* x x)))
(define changeall
(lambda (x)
(if (null? x)
'()
(cons (changeit (car x)) (changeall (cdr x))))))
(changeit 8)
(changeit 9)
(changeall '(2 14 10 8))
我不确定changeall
正在做什么,有人可以帮忙解释一下吗?
编辑:这是代码的其余部分
答案 0 :(得分:0)
尽管Oscar Lopez的评论总结了正在发生的事情,但这个答案更为详细。 changeit
只是x^2
函数。 changeall
是一个参数的函数。如果该参数是空列表((null? x)
),则该函数返回空列表。否则,changeall
计算其参数列表((car x)
)的第一个元素的平方,并将其预先设置为使用其初始参数列表的其余部分changeall
调用的结果({ {1}})。这是一个递归函数调用。在某些时候,参数列表将耗尽,即参数将是空列表,(cdr x)
将返回空列表(我们考虑的第一种情况)。此时,递归将停止。