有人可以解释一下:(+ 2(if(> ba)ba))?

0 lisp scheme

开始完成计算机程序的结构和解释练习,我在第一组练习中坚持这一点.

a=3
b=4
(+ 2 (if (> b a) b a))
Run Code Online (Sandbox Code Playgroud)

我已经找到了答案:6但是,我自己一直在努力,我无法弄清楚如何获得这个数字.

谁能解释一下?

Ste*_*fan 7

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

(+ 2 (if (> 4 3) 4 3))
Run Code Online (Sandbox Code Playgroud)

(> 4 3) 比较4如果大于3,当然它变成了 true

(+ 2 (if true 4 3))
Run Code Online (Sandbox Code Playgroud)

(if true 4 3) 如果条件为真则将评估为4,否则为3,因此在这种情况下,我们得到4离开

(+ 2 4) 这只是添加2和4,即6