【发布时间】:2020-01-29 09:49:07
【问题描述】:
let rec f (l: int list) : int * int =
begin match l with
| [] -> (0,0)
| [x] (x,x)
| x::y::tl -> let (a,b) = f tl in
(x + a, y + b)
end
let r = f [2;3;4;5;6]
我认为答案将计算为r = (6,6),因为如果您继续在尾部调用递归函数,您将得到列表中的最后一项,因此它将与第二种情况匹配,但是我不知道这是否正确或为什么会这样。真的,我不懂let (a,b) = f tl in (x + a, y + b)的用处。
【问题讨论】:
-
我建议运行它以找出
r实际上 是什么,然后从那里返回。 -
并没有真正的帮助...问题是我真的不明白语法的最后一部分要翻译成什么。
-
弄清楚了模式,但语法对我来说仍然有点模糊。
标签: function recursion functional-programming ocaml