问题描述
我正在创建一个函数,它将整数列表列表中的所有数字相加。这是我目前的解决方案:
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
-
您现在需要做的第二件事是迭代您的列表列表,并对您在第一步计算的总和求和。问题是,您已经知道如何在此步骤中对整数列表求和,因此无需对元素求和,只需对元素的总和求和
我什至无法提供框架,因为它可以为您提供即时解决方案。