Example of trace produced.L2
의 모든 요소가 L1
(즉, L1 = [1, 2, 3]이고 L2 = [2, 4, 6] 인 경우 해당 요소의 두 배인 술어 listDouble(L1, L2)
을 작성하려고합니다. 그것은, 그러나프롤로그 - 각 값을 두 배로 늘린 후 원래 목록에서 요소의 새 목록 만들기?
listDouble([], [L2]).
listDouble([H|T], [L2|_]):-
L is H * 2,
listDouble(T, [L]).
하지의 작업과 나는 L2
에 각 요소의 두 배를 추가하는 방법을 이해하는 데 어려움을 겪고 있다고 생각 :)이 내 코드는 지금까지입니까?
단일 변수 경고가 표시되지 않습니까? 구조는 괜찮아 보입니다. 변수 이름의 분포를 다시 생각하면됩니다. –
@TomasBy 몇 가지 싱글 톤 변수 경고가 나타납니다. 그러나 올바르게 구성하지 않았기 때문에 그럴 수도 있다고 생각했습니다. L2는 L1에있는 요소의 목록을 의미하지만 각 요소는 두 배로 늘어납니다. 즉 L1 = [1, 2, 3]이면 L2 = [2, 4, 6] – Carol
경고입니다. 프롤로그에서 치명적인 오류를 나타냅니다. 제가 생각하기에 문제를 이해합니다. 기본 케이스에 문제가 있음을 깨닫게하려고했습니다. –