【发布时间】:2018-05-08 23:27:36
【问题描述】:
我在使用 LISP 的作业中需要帮助。我需要创建一个程序(两个不同的函数),它可以获取诸如((PRO)(LAN))之类的输出并将其转换为北约(PapaRomeoOscar LimaAlfaNovember)。以及能够将 NATO 转换为英语,((PapaRomeoOscar) (LimaAlfaNovember)) 转换为 pro lan。
它需要使用递归,没有循环,没有任何变量。我的教授学习了一周的 LISP 并向我们展示了基本程序。我对这个一无所知。
我的想法是,我需要将列表组合在一起,然后取出列表的汽车并使用 if 语句检查它:
(if (= car(L1 L2) "i")
(format -t “India ”)
(format -t ""))
然后递归地获取列表的 cdr 以递归方式传递它。任何帮助都会非常有帮助。我一直在网上寻找示例代码,但找不到类似的东西。我去了她的办公时间,她说我们应该根据她的笔记知道如何做,这是简单的阶乘函数。
然后为了将北约转换为英文,我认为您需要对列表进行 cons,采取列表中的汽车。然后取汽车的车,并使用与上述类似的 if 语句。然后取出 cdr 并递归地将其传回。我不确定代码的外观,所以我需要很多帮助。提前致谢!
【问题讨论】:
-
“((PRO)(LAN))”是什么意思?那应该是一个字符串吗?数据结构?
-
所有说明都说,它是否将输入作为短语并将其北约代码显示为字符串
-
请仔细阅读您的作业。在第一种情况下,输入是由单个字符命名的符号列表,在第二种情况下是由 NATO 字符名称命名的符号列表。在这两种情况下,输出都是一个字符串。
-
哇;一位知道 Lisp 实际上有循环的 Lisp 教授。