微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

我可以合并此代码吗?或者有更好的解决方案吗?

如何解决我可以合并此代码吗?或者有更好的解决方案吗?

我正在创建一个函数,它将整数列表列表中的所有数字相加。这是我目前的解决方案:

let rec super_sum (nlists : int list list) : int =
  let acc = 0 in
  match nlists with
  | [] -> 0
  | head :: tail ->
    match tail with 
    | [] -> List.fold_left (+) acc head
    | list -> List.fold_left (+) acc head + super_sum list ;;

我觉得我可以巩固一下。我使用了 List.fold_left (+) acc head 两次,我觉得我可以创建一些可以防止这种情况发生的函数

解决方法

我不会给你答案,因为如果你能自己找到它会更好,但我会给你一些找到它的提示。

  1. 您需要做的第一件事是对 int list 的所有元素求和,这就是您已经对 List.fold_left (+) acc head

  2. 您现在需要做的第二件事是迭代您的列表列表,并对您在第一步计算的总和求和。问题是,您已经知道如何在此步骤中对整数列表求和,因此无需对元素求和,只需对元素的总和求和

我什至无法提供框架,因为它可以为您提供即时解决方案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。