【问题标题】:Evaluate combination to tackle recursively (+ 1 2)评估组合以递归处理 (+ 1 2)
【发布时间】:2019-10-25 17:02:20
【问题描述】:

我正在读SICP的第一章

1.1.3 Evaluating Combinations

它表明

To evaluate a combination, do the following: 

1.  Evaluate the subexpressions of the combination.

2.  Apply the procedure that is the value of the leftmost subexpression (the operator) to the arguments that are the values of the other subexpressions (the operands). 

假设一个组合(+ 1 2)

根据上述算法,
首先是评估(检索)+ 1 和 2)
第二种是将+应用于1(存储中间状态)
第三是再次评估(检索)中间状态和2。
四是将中间状态应用于2。

对吗?
+1的中间状态是什么?

【问题讨论】:

    标签: scheme lisp evaluation sicp expression-evaluation


    【解决方案1】:

    表达式(+ 1 2)是由原始表达式组成的组合:+12

    第一步是评估所有子表达式。在这种情况下,它们分别是执行数字之和的运算符,以及分别对应于数字 1 和 2 的数字。

    所以你有一个运算符和两个数值。第二步说你必须对两个数字应用运算符(最左边的值):换句话说,你必须对 1 和 2 应用求和运算符,这样才能得到数字 3。然后过程终止。

    请注意,此计算中没有中间状态。

    【讨论】:

      【解决方案2】:

      第二种是将+应用于1

      不,第二步是调用函数+,参数值为1和2。

      然后计算 1 和 2 的总和并返回 3。

      【讨论】:

        猜你喜欢
        • 2020-07-12
        • 1970-01-01
        • 1970-01-01
        • 2023-03-28
        • 2020-12-11
        • 2020-07-10
        • 1970-01-01
        • 2012-01-04
        • 1970-01-01
        相关资源
        最近更新 更多