我想写一个函数将一对夫妻分成几个序列,这里是代码:
append
由于复杂性,我想在不使用{{1}}(不是递归终端函数)的情况下这样做。
答案 0 :(得分:1)
我认为您想要做的是以下内容:
let uncombine s =
let rec aux sr =
match sr with
| Nil -> Nil, Nil
| Cons ((e1, e2), sr) ->
let s1, s2 = aux sr in
Cons (e1, s1), Cons (e2, s2)
in
aux (s ())
当然你也可以写一个尾递归函数并在最后反转它。你不会有最好的表现,但你不会冒着堆叠溢出的风险。