꼬리 재귀를 사용하여 프롤로그에서 트리를 병합하고 싶습니다. 재귀 호출을 사용하여 추가 목록을 사용하여 작업을 완료했습니다. 내 버전을 최적화하고 싶습니다. 이것은 재귀 호출을 사용하는 내 함수입니다. 나는 꼬리 호출을 최적화되도록하고 싶습니다.프롤로그 트리를 평평하게하기위한 테일 호출 최적화
fl_t(lf(A),[A]).
fl_t(tr(A,B,C),S4):- fl_t(A,X1),fl_t(C,X2),append(X2,[Y],X3),append(X3,X1,S4).
Input : fl_t(lf(a),Result)
Output : Result=[a]
Input : fl_t(tr(lf([1, 2]), 3, leaf([4, 5])),Result)
Output : Result = [[1,2],3,[4,5]]
누구든지 나를 기쁘게 할 수 있습니까? 나는 프롤로그를 처음 사용합니다. TIA
'B = Y'가 누락되었습니다 - 적어도 – false