添加新元素

时间:2016-12-18 14:01:34

标签: erlang

我正在使用递归函数,在列表元素之后添加元素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)].

我应该如何通过递归来做到这一点?

1 个答案:

答案 0 :(得分:2)

三件事:

  1. 您需要在基本情况下返回[]
  2. 您需要在vst案例中递归调用H=:=B
  3. 您需要在H=/=B
  4. 时处理此案例

    最终代码:

    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, []).
    []