【发布时间】:2021-11-13 03:44:57
【问题描述】:
我正在用 SML 编写一个函数来查找两个整数集的子集。例如,subset([1,5],[1,3,5]) 应该返回 true。我在编写这个函数时遇到了一点麻烦。我的问题是我应该如何递归地编写这个。
这是我的功能:
fun subset(lst1,lst2) = true
| subset(a::;lst1,lst2) =
if member(a,lst2) then subset(lst1,lst2)
else false;
【问题讨论】:
-
正如我在回答您上一个问题时所建议的那样,请参阅this answer 关于您直接从中获取代码的递归。请向我们展示递归解决此问题的尝试,我们可以回答有关特定错误的问题。
-
你在正确的轨道上,但如果
ls1的所有元素都是ls2的成员,ls1是ls2的子集,而不是ls1本身。想想lst1是空集的情况,以及不是空集的情况(即至少有一个成员)。 -
另外,顺序重要吗?
-
我编辑了我的代码以使用递归。不过,我遇到了一些错误。此外,顺序无关紧要。
标签: sml