我正在尝试在函数中输入一个列表,它会向我发送一个列表,其中包含使用 f# 和以下递归删除的前半部分元素,但我一直遇到一个我无法弄清楚的基本情况问题。有什么想法吗?我正在使用第二个影子列表来计算我需要走多远,直到我进入列表的一半(通过一次删除两个元素)
let rec dropHalf listToDrop shadowList =
match shadowList with
| [] -> listToDrop
| shadowHead2::shadowHead1::shadowTail -> if shadowTail.Length<=1 then listToDrop else
match listToDrop with
|[] -> listToDrop
|listToDropHead::listToDropTail -> dropHalf listToDropTail shadowTail