【发布时间】:2013-01-19 09:53:44
【问题描述】:
我是函数式编程的新手,我的任务是计算列表的部分总和。例如。 - psum [1,1,1,1,1]; val it = [1,2,3,4,5] : int 列表
到目前为止,这是我的代码。但是我的函数只是返回列表原样。
fun ppsum2([])=[]
| ppsum2(x::L) = x::ppsum2(L);
exception Empty_List;
fun psum(L) : int list =
if L=nil then raise Empty_List
else psum2(L);
psum([2,3,4]);
【问题讨论】:
-
你的代码肯定是这样缩进的吗? :( 无论如何,考虑
[] -> []以完全避免异常。然后,考虑递归函数的基本情况和终止情况,以及给定输入的每一步的结果应该是什么。 -
你说“sum”,但你根本没有用过
+。试着在纸上手工评估ppsum2 [2,3,4],你就会明白为什么你会得到一个相同的列表。
标签: list recursion functional-programming ml