【发布时间】:2017-11-06 20:02:07
【问题描述】:
示例:split [1;3;2;4;7;9];;
输出:([1;3;7;9], [2;4])
我是 F# 的新手,我不明白。
无法使用partition 内置函数。
这是我目前所拥有的:
let rec split xs =
match xs with
| [] -> [], []
| xs -> xs, []
| xh::xt -> let odds, evens = split xt
if (xh % 2) = 0 then xh::odds, xh::evens
else xh::odds, evens
固定代码:
let rec split xs =
match xs with
| [] -> [], []
| xh::xt -> let odds, evens = split xt
if (xh % 2) = 0 then odds, xh::evens
else xh::odds, evens
*感谢@TheInnerLight 指出我的错误:无法到达的案例和不必要地修改赔率
【问题讨论】:
-
一个忠告,因为这似乎是家庭作业:你应该告诉你的教授你在 Stack Overflow 上寻求帮助,以及你得到了什么帮助。最好的方法是在上交作业时在作业的 cmets 中包含指向此问题的链接 --
https://stackoverflow.com/q/44379239/。根据您的教授寻求帮助的政策,您可能需要也可能不需要这样做,但最好完全公开你在做作业时获得的任何帮助。 -
感谢您编辑问题以帮助将来可能找到它的其他人。但是,在 Stack Overflow 上,无需在问题标题中加上“(已解决)”:您通过给它一个绿色复选标记来接受答案这一事实足以传达这一事实,事实上人们更喜欢 not 将“(已解决)”放入问题标题中。不过,您愿意这样做是值得赞赏的。 :-)
标签: list recursion split f# partition