【发布时间】:2017-01-31 18:34:08
【问题描述】:
我正在尝试实现一个函数,该函数接受一个元素和一个列表并删除所述元素。
这没有产生输出,我不知道为什么。我是 F# 的新手,所以我很可能犯了一个基本错误。请注意,我正在尝试使用递归来做到这一点。
【问题讨论】:
-
仅此一项只是坐在那里等待调用的函数。您需要使用
remove (3, [1..5])之类的名称来调用它。 -
当我尝试这样调用它时,我得到“终端进程以退出代码终止:1”。我不知道如何解决这个问题。
-
它是递归的,因为您在函数内部再次调用它。但是我刚刚发现了一个错误,它可能导致进程因堆栈溢出而终止:在匹配表达式的中间情况下,它应该是
remove (item, tl)。您当前正在再次传入原始列表,这会导致递归永远不会终止。 -
抱歉所有问题,您知道为什么它只会删除元素的第一次迭代吗?例如,如果我运行 remove (2, [1;2;3;2;4]) 函数在应该返回 [1;3;4] 时返回 [1;3;2;4]
-
您也可以对已接受的答案进行投票。 :)