作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我真的是 F# 的新手,我需要一些关于 F# 问题的帮助。
我需要实现一个将列表分成两半的 cut 函数,以便输出...
cut [1;2;3;4;5;6];;
gencut(2, [1;3;4;2;7;0;9]);;
最佳答案
由于您的列表长度均匀,并且您将其干净地切成两半,我建议使用以下内容(首先使用伪代码):
slow
和 fast
. slow
一次遍历列表一个元素,fast
一次执行两个元素。 slow
将每个元素添加到累加器变量中,而 fast
向前移动。 fast
指针到达列表末尾,slow
指针只会步进一半的元素,所以它在数组的中间。 slow
跨过+剩余的元素。这应该是整齐地切成两半的两个列表。 let cut l =
let rec cut = function
| xs, ([] | [_]) -> xs
| [], _ -> []
| x::xs, y::y'::ys -> cut (xs, ys)
cut (l, l)
x::xs
步骤 1 元素,
y::y'::ys
第二步。
关于list - 在 F# 中将列表拆分为两个相等的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4866640/
我是一名优秀的程序员,十分优秀!