프롤로그에서 재귀를 이해하기 란 정말 어렵지만 다른 언어의 방법과는 분명 다릅니다 (PHP, Java 및 C로 작업하고 있습니다).프롤로그의 재귀
그래, 나는 그것에 관한 모든 튜토리얼을 읽었지 만 여전히 구체적인, 다소 복잡한 경우는 얻지 못한다. 예를 들어
, 목록에서 요소의 발생 횟수를 얻기 위해 우리는이 :
사용 호출 할 수 있습니다occurrence([], _, 0).
occurrence([H | T], H, N) :- !, occurrence(T, H, N1), N is N1 + 1.
occurrence([_ | T], H, N) :- occurrence(T, H, N).
가 :
occurrence([1,4,9,1,2],1,R).
하고 결과를해야합니다
?- R=2
이제 3 행이 왜 발생합니까? 뭐하는거야? 나는 답을 보지 않고이 프로그램을 썼고 두 번째 줄 이후에 끝났다. Ofcourse 그것 doesn''t는 일하고있다.
반면에 "절단"이 왜 발생합니까? 모든 호출 후에 결과를 출력하려고 노력해 왔으며 점점 더 혼란스러워졌습니다.
당신은 * 경우 * 및 * 다음 * 목표의 주위에()의 제거 할 수 있습니다. –
이렇게 @PauloMoura? –
닫기. 그냥 약간 편집했습니다. 괄호 안에 항상 분리형과 if-then-elses를 쓰는 것이 좋은 프로그래밍 스타일로 간주됩니다. –