member/2を外してfindallの第二引数を定義し直してみましょう。

like368(List,NewList) :-
    findall(N,add_1(List,N),NewList).

add_1([N1|_],N) :- N is N1 + 1.
add_1([_|R],N) :-
    add_1(R,N).

しかし、こうなるとlike368の再帰による定義は

like368([],[]).
like368([N1|R1],[N2|R2]) :-
    N2 is N1 + 1,
    like368(R1,R2).

ですから、何をやってるのかわからない、ということにもなる。

つまり、何故findallによる定義を使うかですが、
memberやappendといった既存の高名な非決定性の再帰述語!!を
使ってadd_1のような定義を省略します。こうすることによって再帰定義の
繰り返しをひとつ回避してほんの僅かですが宣言性を高めようと
しているのです。