【发布时间】:2020-05-18 03:57:44
【问题描述】:
所以这段代码在我老师给我们准备递归考试的工作表上。老师说在LISP中,你在变量之前写操作数,这很有意义。没有意义的是,我的教授说第 2 行的 if 块仍然可以正常读取,“如果 y 小于 1”,但他说第 3 行的代码在“y 不小于 1”时执行。工作表上的问题要求我们找出 f(3 2) 的结果。任何一个问题的答案都将不胜感激!
【问题讨论】:
所以这段代码在我老师给我们准备递归考试的工作表上。老师说在LISP中,你在变量之前写操作数,这很有意义。没有意义的是,我的教授说第 2 行的 if 块仍然可以正常读取,“如果 y 小于 1”,但他说第 3 行的代码在“y 不小于 1”时执行。工作表上的问题要求我们找出 f(3 2) 的结果。任何一个问题的答案都将不胜感激!
【问题讨论】:
if 语句具有三个子项:测试条件、测试为真时的结果和测试为假时的结果。在您的代码中可能会造成混淆,因为最后两个元素已在第 3 行中组合在一起。真正的结果只是“x”,而错误的结果是 (f (* x x) (- y 1))。
因此该语句将被读作“如果 y 小于 1 则返回 x,否则返回 (f (* x x) (- y 1))”。
我希望这足以让您开始。
【讨论】: