我不确定这段代码是做什么的

时间:2016-05-10 23:33:41

标签: scheme

(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正在做什么,有人可以帮忙解释一下吗?

编辑:这是代码的其余部分

1 个答案:

答案 0 :(得分:0)

尽管Oscar Lopez的评论总结了正在发生的事情,但这个答案更为详细。 changeit只是x^2函数。 changeall是一个参数的函数。如果该参数是空列表((null? x)),则该函数返回空列表。否则,changeall计算其参数列表((car x))的第一个元素的平方,并将其预先设置为使用其初始参数列表的其余部分changeall调用的结果({ {1}})。这是一个递归函数调用。在某些时候,参数列表将耗尽,即参数将是空列表,(cdr x)将返回空列表(我们考虑的第一种情况)。此时,递归将停止。