Algorithm SML计数呼叫和激活记录,迭代算法的效率
这是我的作业,叫做时间和空间要求 注意:与我一起工作的导师说他没有看到用例,所以我们使用了(1,2,3,4,5,6)的列表 到目前为止,我们拥有的是: a。2次调用Algorithm SML计数呼叫和激活记录,迭代算法的效率,algorithm,runtime,sml,Algorithm,Runtime,Sml,这是我的作业,叫做时间和空间要求 注意:与我一起工作的导师说他没有看到用例,所以我们使用了(1,2,3,4,5,6)的列表 到目前为止,我们拥有的是: a。2次调用len函数和2次激活记录 b。4次调用get函数和4次激活记录 c。我们相信这样更有效。只能使用单个激活记录,因为它可以重用,并且可以使用赋值来更改每个调用的函数参数值 基本上,我们的方向正确吗? 非常感谢您的帮助 exception Empty; exception Empty; fun middle1(l) = let
len
函数和2次激活记录
b。4次调用get
函数和4次激活记录
c。我们相信这样更有效。只能使用单个激活记录,因为它可以重用,并且可以使用赋值来更改每个调用的函数参数值
基本上,我们的方向正确吗?
非常感谢您的帮助
exception Empty;
exception Empty;
fun middle1(l) =
let fun len(nil) = 0
| len(x::l) = 1+len(l)
and get(n, nil) = raise Empty
| get(n, x::l) = if n=1 then x else get(n-1,l)
in
get((len(l) div 2)+1, l)
end;
val middle1 = fn : 'a list -> 'a
middle1([1,2,3,4,5,6]);
val it = 4 : int