此LISP代码中的递归和控制结构与正常功能和控制结构有何不同?

问题描述 投票:-1回答:1

<< img src =“ https://image.soinside.com/eyJ1cmwiOiAiaHR0cHM6Ly9pLnN0YWNrLmltZ3VyLmNvbS9iRGRHbC5wbmcifQ==” alt =“在此处输入图像描述”>

因此,这段代码在我的老师给我们准备的递归工作表上。老师指出,在LISP中,您将操作数写在变量之前,这很有意义。没什么意思的是,我的教授说第二行的if块仍然可以正常读取,“如果y小于1”,但是他说,第三行的代码在“ y不小于1”时执行。工作表上的问题要求我们找到f(3 2)的结果。任何一个问题的任何答案将不胜感激!

function recursion lisp
1个回答
0
投票

if语句具有三个子项:测试条件,测试为true时的结果和测试为false时的结果。在您的代码中,这可能会造成混淆,因为最后两个元素已在第3行中合并。真实的结果只是“ x”,而错误的结果是(f (* x x) (- y 1))。因此,该语句将被读为“如果y小于1,则返回x,否则返回(f (* x x) (- y 1))”。我希望这足以让您入门。

© www.soinside.com 2019 - 2024. All rights reserved.