有人可以解释:(+2(if(> b a)b a))?

时间:2018-11-25 02:23:58

标签: scheme lisp

开始完成《计算机程序的结构和解释》中的练习,而我在第一组练习中一直坚持这一练习。

a=3
b=4
(+ 2 (if (> b a) b a))

我已经找到了答案:6但是我自己解决这个问题,我不知道如何获得这个数字。

有人可以解释吗?

1 个答案:

答案 0 :(得分:7)

您可以简单地替换值以找出正在发生的事情,因此您的表达式是

(+ 2 (if (> 4 3) 4 3))

(> 4 3)比较4是否大于3,当然它是true

(+ 2 (if true 4 3))

(if true 4 3)如果条件为true,则求值为4,否则为3,因此在这种情况下,我们得到4个叶子

(+ 2 4)仅添加2和4,即6