如何解决我可以合并此代码吗?或者有更好的解决方案吗?
我正在创建一个函数,它将整数列表列表中的所有数字相加。这是我目前的解决方案:
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
两次,我觉得我可以创建一些可以防止这种情况发生的函数。
解决方法
我不会给你答案,因为如果你能自己找到它会更好,但我会给你一些找到它的提示。
-
您需要做的第一件事是对
int list
的所有元素求和,这就是您已经对List.fold_left (+) acc head
-
您现在需要做的第二件事是迭代您的列表列表,并对您在第一步计算的总和求和。问题是,您已经知道如何在此步骤中对整数列表求和,因此无需对元素求和,只需对元素的总和求和
我什至无法提供框架,因为它可以为您提供即时解决方案。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。