prolog初学之列表翻转问题

初学prolog,请教为什么以下的翻转列表代码不对呢?

reverse([H],[H]).
reverse([H | T],[R | [H]]) :-
    reverse(T,[R]).

看别人的翻转是这么写的

reverse(List, Reversed) :-
   reverse(List, [], Reversed).
reverse([], Reversed, Reversed).
reverse([Head|Tail], SoFar, Reversed) :-
   reverse(Tail, [Head|SoFar], Reversed).

请问为什么需要增加一个reverse/3的规则?

阅读 3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进