【问题标题】:I'm not sure what this code is trying to do我不确定这段代码试图做什么
【发布时间】:2016-05-10 23:33:41
【问题描述】:

(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 在做什么,谁能帮忙解释一下?

编辑:这是其余的代码

【问题讨论】:

  • 我建议你在你的 REPL 中运行它。我们不知道,因为我们不知道changei 做了什么。
  • map 表示 squares 其输入列表的所有元素。给你。

标签: scheme


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-18
    • 1970-01-01
    • 1970-01-01
    • 2016-05-31
    • 1970-01-01
    • 2015-04-23
    • 2012-02-08
    相关资源
    最近更新 更多