我想知道这是否可能像问题所暗示的那样。我的问题是我似乎无法掌握如何处理给定输入值可以有多个孩子的事实。通过使用可变的 SortedSet 变量可以轻松解决该问题,如下所示。但我真的很想知道这是否是一个可以通过纯递归和创建新的非静音列表或类似列表来解决的问题。我希望我的问题很清楚。我担心我不知道这是不可能的简单结论。正如您在下面看到的,if(true) 将返回一个列表,但 else 将返回一个列表列表。所以下面的代码不处于工作状态。
let someSet = new System.Collections.Generic.SortedSet<string>()
let rec children(value:string,listSoFar) =
printfn "ID: %A" value
someSet.Add(value) works fine of course.
let newList = List.append listSoFar [value]
if(not (hasChildren(value))) then
newList
else
let tmpCollection = database.GetCollection<Collection>("Collection")
let tmpQuery = Query.EQ("Field",BsonValue.Create(value))
let tmpRes = tmpCollection.Find(tmpQuery)
[ for child in tmpRes do
yield children(child.Value,newList) ]
let resultList = children("aParentStartValue",[])
//Or do i need to use someSet values?