【问题标题】:OCaml recursive list size function returning incorrect sizeOCaml 递归列表大小函数返回不正确的大小
【发布时间】:2018-03-01 15:27:58
【问题描述】:

我认为这正是查找列表长度的代码:

let rec size lst =
  match lst with
    | [] -> 0
    | h::t -> 1 + (size t);;

但由于某种原因,当我将它应用于大小为 2 的列表时,它返回 1?我觉得我错过了一些明显的问题,但这对我来说似乎很简单。

【问题讨论】:

  • 我已经复制粘贴了你的代码 - 它给出了正确的结果。
  • 确保以正确的方式创建列表。 size [1; 2] 为我返回 2
  • 请向我们展示整个代码以及您尝试过的列表。很可能你打错字了,写了[1, 2](相当于[ (1,2) ])而不是[1; 2]

标签: list recursion ocaml


【解决方案1】:

表达式size [1,2] 将返回1,因为[1,2][(1,2)] 的语法糖,即它是一个由一对组成的列表。在 OCaml 中,列表的元素由分号 ; 分隔。因此,size [1;2] 将返回 2

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-02
    • 1970-01-01
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多