相关疑难解决方法(0)

链接列表分区功能和反转结果

我写了这个F#函数来将列表分区到某一点而不是更进一步 - 很像是takeWhile和之间的交叉partition.

let partitionWhile c l =
    let rec aux accl accr =
        match accr with
        | [] -> (accl, [])
        | h::t ->
            if c h then
                aux (h::accl) t
            else
                (accl, accr)
    aux [] l
Run Code Online (Sandbox Code Playgroud)

唯一的问题是"采取"的项目是相反的:

> partitionWhile ((>=) 5) [1..10];;
val it : int list * int list = ([5; 4; 3; 2; 1], [6; 7; 8; 9; 10])
Run Code Online (Sandbox Code Playgroud)

除了诉诸调用之外rev,是否有一种方法可以编写这个函数,使第一个列表的顺序正确?

algorithm f# list

7
推荐指数
2
解决办法
620
查看次数

F#Interleave 2列表

有没有办法可以合并2个列表

let a = ["a"; "b"; "c"]
let b = ["d"; "b"; "a"]
Run Code Online (Sandbox Code Playgroud)

所以我得到了这个结果

result = ["a"; "d"; "b"; "b"; "c"; "a"]
Run Code Online (Sandbox Code Playgroud)

f# list

4
推荐指数
2
解决办法
539
查看次数

以递归方式合并F#中的两个列表

我期待写一个递归函数来合并到F#中的整数列表

我从这开始,但不知道接下来该做什么.

let rec merge xs ys =
    match xs with
    | [] -> ys
    | 

let li = [1;3;5;7;]
let ll = [2;4;5;8;]
Run Code Online (Sandbox Code Playgroud)

recursion f#

0
推荐指数
1
解决办法
2690
查看次数

标签 统计

f# ×3

list ×2

algorithm ×1

recursion ×1