1
누적자를 이해하려고하는데이 구현에 포함해야합니다. 간단한 목록을 검색하는 방법을 알아 냈습니다. 나는이 중첩 된 목록에 대한 작동하게 할 수있는 방법을 이제프롤로그 누적 기와 함께 목록의 요소 찾기
find(Element,[],A,A).
find(Element, [H|Tail], A, N) :- Element = H, A1 is A + 1,
find(Element, Tail, A1, N).
find(Element, [H|Tail], A, N) :- find(Element, Tail, A, N).
: 이 주어진 요소의 발생 수를 계산?
당신은 단순히H
이 목록뿐만 아니라 경우, 발생 횟수가 먼저 계산되도록 일치 프로그램에 다른 항목을 추가해야합니다
나는 당신의 중간 기간에 실수가 있다고 생각합니다. 나는 그것을 나누는 방법을 얻지 만, 마지막 변수와 마지막 변수는 [H | T]의 T와 일치해서는 안됩니다. 내가 맞습니까? – user3614293
사실,'T'가 아닌 다른 변수를 사용해야합니다. 미안하지만 요점을 얻길 바래? 결정된. –
@ user3614293 : 왜 'find' 술어를 역 추적해야합니까? 그들은 단지'find' 호출을 막을 것입니다. 역 추적 할 이유가 없으므로 (알고리즘은 "직선적"입니다), 이것이 유용한 시나리오는 없습니다. –