2016-05-10 53 views
-3

(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

我建议你在你的REPL中运行它。我们无法知道,因为我们不知道'changei'的作用。 – Rptx

+0

这是一个''地图',它的输入列表中的所有元素都是正方形的。你走了。 –

回答

0

其余尽管奥斯卡·洛佩斯的评论总结了是怎么回事,这个答案是一个比较详细的。 changeit就是x^2的功能。 changeall是一个参数的函数。如果该参数是空列表((null? x)),则该函数返回空列表。否则,changeall将计算其参数列表((car x))的第一个元素的平方值,并将其前缀与changeall调用的结果及其初始参数列表的其余部分((cdr x))一起调用。这是一个递归函数调用。在某些时候,参数列表将被耗尽,也就是说,参数将是空列表,并且changeall将返回空列表(我们考虑的第一种情况)。此时,递归将停止。

相关问题