小编Shi*_*Pie的帖子

F#mergesort尾递归

我试着为mergesort写一个尾递归代码.代码编译并运行.但是,输出是错误的.它只输出一个整数.我想知道如何修复此代码,以便整数列表被排序和输出.

let rec merge L L2 P = 
  match L, L2 with
  | [], [] -> P
  | [], _  -> L2
  | _,  [] -> L
  | hd::t1, hd2::t2 ->
    if hd <= hd2 then
       merge t1 L2 (P @ [hd])
    else
       merge L t2 (P @ [hd2])


//
// mergesort:
//
let rec ms L  = 
  match L with
  | []    -> []
  | e::[] -> L
  | _     -> 
    let mid = List.length L / 2
    let …
Run Code Online (Sandbox Code Playgroud)

f#

4
推荐指数
1
解决办法
382
查看次数

F#模式过滤

有人可以告诉我如何在列表包含特定号码时过滤掉列表.例如,如果子列表包含2,那么我想要第三个值.

let p = [ [0;2;1]; [7;2;5]; [8;2; 10]; [44; 33; 9]]
//Filtered List: [1;5;10]
let q = p |> List.filter(fun((x,y):int List)  (List.item 2 x) = 1,  (List.item 3 y))
Run Code Online (Sandbox Code Playgroud)

上面是我的代码到目前为止.我知道它的错误,但似乎无法在代码中弄明白.

f#

3
推荐指数
2
解决办法
92
查看次数

F#过滤列表

我将如何通过索引过滤掉列表?列表:[400; 5; 401; 6; 403; 7] 过滤列表:[5; 6; 7;]

我想过滤掉奇数索引号。所以我可以比较这些值,然后打印出最大值。

f#

3
推荐指数
1
解决办法
1256
查看次数

列表的重复项目

如果我想复制列表中的元素,我将如何进行并执行此操作?我在考虑以下几点:

let List = [(1,2);(3,4)]
let v = List.map(fun (x,y) -> List.replicate 2 (x,y)) List
Run Code Online (Sandbox Code Playgroud)

我希望结果是[(1,2); (1,2); (3,4); (3,4)].任何建议将不胜感激.如果可能的话,我想只使用更高的顺序.

f#

1
推荐指数
2
解决办法
112
查看次数

标签 统计

f# ×4