如何在erlang中对整数列表使用foldl来返回最大整数?
我想使用下面的Erlang代码来获得整数列表中的最高整数,但由于某些原因,最终总是得到列表中的最后一个整数。有什么帮助吗 解决方案示例->如何在erlang中对整数列表使用foldl来返回最大整数?,erlang,max,anonymous-function,fold,Erlang,Max,Anonymous Function,Fold,我想使用下面的Erlang代码来获得整数列表中的最高整数,但由于某些原因,最终总是得到列表中的最后一个整数。有什么帮助吗 解决方案示例->test:max([2,8,5,6])。应返回8,但此代码返回6 -spec max(L) -> M when L::[integer()], M::integer(). max([H | T]) -> F = fun(L, Acc) -> max([L]) end, lists:foldl(F, H, T). 函数F应返回L和A
test:max([2,8,5,6])。
应返回8,但此代码返回6
-spec max(L) -> M when
L::[integer()],
M::integer().
max([H | T]) ->
F = fun(L, Acc) -> max([L]) end,
lists:foldl(F, H, T).
函数
F
应返回L
和Acc
的最大值。您可以使用内置的max/2
功能:
...
F = fun(L, Acc) -> max(L, Acc) end.
...
测试:
1>F=fun(L,Acc)->max(L,Acc)结束。
#乐趣
2> [H | T]=[2,8,5,6]。
[2,8,5,6]
3> 列表:foldl(F,H,T)。
8.
您的函数F
应返回L
和Acc
的最大值。您可以使用内置的max/2
功能:
...
F = fun(L, Acc) -> max(L, Acc) end.
...
测试:
1>F=fun(L,Acc)->max(L,Acc)结束。
#乐趣
2> [H | T]=[2,8,5,6]。
[2,8,5,6]
3> 列表:foldl(F,H,T)。
8.
您在函数F
中返回的将是Acc
的新值,并且最终值将返回:foldl/3
您可能需要在F
内进行比较,并检查Acc
是否大于当前值。您不需要递归max/1
,因为您正在迭代lists:foldl/3
中的列表
如果您需要实际的代码,请立即告诉我,但我建议您自己解决。这样对您来说更有趣。您在函数
F
中返回的将是Acc
的新值,最终值将返回:foldl/3
您可能需要在F
内进行比较,并检查Acc
是否大于当前值。您不需要递归max/1
,因为您正在迭代lists:foldl/3
中的列表
如果您需要实际的代码,请立即告诉我,但我建议您自己解决。这样对你来说更有趣