【发布时间】:2017-01-18 20:00:05
【问题描述】:
我正在做作业,问题是我们得到 2 个相同大小的 int 列表,然后将这些数字相加。示例如下。
vecadd [1;2;3] [4;5;6];; would return [5;7;9]
我是新手,我需要保持我的代码非常简单,以便从中学习。到目前为止我有这个。 (不工作)
let rec vecadd L K =
if L <> [] then vecadd ((L.Head+K.Head)::L) K else [];;
我基本上只想用添加的数字替换第一个列表 (L)。我还尝试使用匹配案例以不同的方式对其进行编码。
let rec vecadd L K =
match L with
|[]->[]
|h::[]-> L
|h::t -> vecadd ((h+K.Head)::[]) K
他们都没有工作,如果我能得到任何帮助,我将不胜感激。
【问题讨论】:
-
为什么你不想返回一个新列表?
-
使用 Seq.zip 并返回一个新集合对我来说似乎是最惯用的方法
-
@FyodorSoikin 作业没有指定我是否应该返回新列表。通常我会采取安全的方式而不是,但在这种情况下,我想这并不重要。很抱歉造成混乱。
-
“安全方式”和“修改现有列表”是不相容的想法。