我正在使用递归函数,在列表元素之后添加元素A,等于B.所以它应该如下所示:
func(20,4,[1,2,4,5,4]) -> [1,2,4,20,5,4,20]
这就是我所拥有的:
-module (task).
-export ([vst/3]).
vst(A,B,[]) -> 0;
vst(A,B,[H|T]) when H=:=B -> [H,A|T)].
我应该如何通过递归来做到这一点?
答案 0 :(得分:2)
三件事:
[]
。vst
案例中递归调用H=:=B
。H=/=B
。最终代码:
vst(_A, _B, []) -> [];
vst(A, B, [H|T]) when H =:= B -> [H, A | vst(A, B, T)];
vst(A, B, [H|T]) -> [H | vst(A, B, T)].
1> task:vst(20, 4, [1,2,4,5,4]).
[1,2,4,20,5,4,20]
2> task:vst(20, 4, [4,4,4]).
[4,20,4,20,4,20]
3> task:vst(20, 4, []).
[]