Prolog에서 예상치 못한 답변을받는 이유는 무엇입니까? 나열, 곱하기, 재귀

하비브 모하마드

예제에 표시된대로 목록의 모든 요소를 ​​표시해야합니다. 프로그램을 실행하고 재귀를 위해 predecate를 Element: el, List: L. [L1el1, L2el1], [L1el2, L2el1], [L1el3, L2el1]...사용 multiply/3하고 있습니다 multiply/4. 비워지면 'Tmp'에서 'L1'을 복원합니다 (L2가 비어 있지 않은 경우에만, 그렇지 않으면 재귀 종료).

추상적 인 예 :

for element l in List1 {
    for element k in List2 {
        print([k, l]);
    }
}

my_code.pl

multiply(L1, L2, X):-
    multiply(L1, L2, L1, X).

multiply(X, [], _, X).

multiply([], [_|T], Tmp, X):-
    multiply(Tmp, T, Tmp, X),!.

multiply([H|T], [H1|T1], Tmp, [[H,H1]|X]):-
    multiply(T, [H1|T1], Tmp, X).

예상 :

?- multiply([1,2,3], [a,b], X).
X = [[1, a], [2, a], [3, a], [1, b], [2, b], [3, b]].

내가 얻은 것 :

?- multiply([1,2,3], [a,b], X).
X = [[1, a], [2, a], [3, a], [1, b], [2, b], [3, b], 1, 2, 3].

이 코드를 약간 수정하여 예상 결과를 얻는 방법. 내장 술어를 사용하지 않고!

L1이 X 끝에 나타나는 이유는 무엇입니까? 그것을 고치는 방법?

하비브 모하마드

문제는 multiply/4재귀 종료 조건에 있습니다.

    multiply(X, [_|X], _, X).

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

재귀 함수를 장식하면 예상치 못한 결과 흐름이 발생하는 이유는 무엇입니까?

분류에서Dev

여기에서 다중 할당이 예상치 못한 결과를주는 이유는 무엇입니까?

분류에서Dev

앵귤러가 다른 문자열에서 예상치 못한 동작을하는 이유는 무엇입니까?

분류에서Dev

bash 스크립트에서 예상치 못한 EOF가 발생하는 이유는 무엇입니까?

분류에서Dev

bash 스크립트에서 예상치 못한 EOF가 발생하는 이유는 무엇입니까?

분류에서Dev

UINavigationController의 컨테이너 뷰 내에 예상치 못한 크기가있는 이유는 무엇입니까?

분류에서Dev

결과 배열을 해제하면 재귀가 예상대로 작동하는 이유는 무엇입니까?

분류에서Dev

제곱근에 대한이 재귀 함수가 잘못된 결과를 제공하는 이유는 무엇입니까?

분류에서Dev

C ++에서 체이닝 프로그램을 사용하는 해싱이 예상치 못한 출력을 제공하는 이유는 무엇입니까?

분류에서Dev

Node.js에서 무한 재귀 호출을 피하거나 방지하는 방법은 무엇입니까?

분류에서Dev

Haskell에서 무한 2D 배열을 재귀 적으로 정의하는 방법은 무엇입니까?

분류에서Dev

적절한 응답을받을 때까지 서버를 재귀적이고 효율적으로 호출하는 방법은 무엇입니까?

분류에서Dev

ESLint에서 예상치 못한 토큰을 수정하는 방법은 무엇입니까?

분류에서Dev

PRAW가 포함 된 Reddit 봇이 예상치 못한 문자열을 반환하는 이유는 무엇입니까?

분류에서Dev

현재 예상치 못한 오류 메시지 "("가 발생한 이유는 무엇입니까?

분류에서Dev

내 문자열에 # 0 문자가 포함되어 있는데 ShowMessage가 예상치 못한 출력을내는 이유는 무엇입니까?

분류에서Dev

if / else 문을 사용할 때 예상치 못한 동작이 발생하는 이유는 무엇입니까?

분류에서Dev

존재하지 않는 라인에서 예상치 못한 입력 종료

분류에서Dev

GNU에 대한 "-or"플래그가 내 표현식을 예상치 못한 방식으로 평가하는 이유는 무엇입니까?

분류에서Dev

Haskell에서 재귀 데이터 유형을 열거하는 방법은 무엇입니까?

분류에서Dev

코드가 재귀에서 나오지 않는 이유는 무엇입니까?

분류에서Dev

내 SQL 함수가 예상치 못한 값을 반환하는 이유는 무엇입니까?

분류에서Dev

트리에 여러 이미지 형식을 재귀 적으로 나열하는 방법은 무엇입니까?

분류에서Dev

트리에 여러 이미지 형식을 재귀 적으로 나열하는 방법은 무엇입니까?

분류에서Dev

예상치 못한 결과 : 정의되지 않은 변수에 액세스해도 오류가 발생하지 않는 이유는 무엇입니까?

분류에서Dev

재귀 호출 내에서 문자열을 인덱싱하면 다른 결과가 나오는 이유는 무엇입니까?

분류에서Dev

피보나치 재귀 시퀀스가 작동하는 이유는 무엇입니까?

분류에서Dev

이 재귀 유형 정의에 기본 정의가 필요한 이유는 무엇입니까?

분류에서Dev

설정되지 않은 배열 값이 예상치 못한 이유는 무엇입니까?

Related 관련 기사

  1. 1

    재귀 함수를 장식하면 예상치 못한 결과 흐름이 발생하는 이유는 무엇입니까?

  2. 2

    여기에서 다중 할당이 예상치 못한 결과를주는 이유는 무엇입니까?

  3. 3

    앵귤러가 다른 문자열에서 예상치 못한 동작을하는 이유는 무엇입니까?

  4. 4

    bash 스크립트에서 예상치 못한 EOF가 발생하는 이유는 무엇입니까?

  5. 5

    bash 스크립트에서 예상치 못한 EOF가 발생하는 이유는 무엇입니까?

  6. 6

    UINavigationController의 컨테이너 뷰 내에 예상치 못한 크기가있는 이유는 무엇입니까?

  7. 7

    결과 배열을 해제하면 재귀가 예상대로 작동하는 이유는 무엇입니까?

  8. 8

    제곱근에 대한이 재귀 함수가 잘못된 결과를 제공하는 이유는 무엇입니까?

  9. 9

    C ++에서 체이닝 프로그램을 사용하는 해싱이 예상치 못한 출력을 제공하는 이유는 무엇입니까?

  10. 10

    Node.js에서 무한 재귀 호출을 피하거나 방지하는 방법은 무엇입니까?

  11. 11

    Haskell에서 무한 2D 배열을 재귀 적으로 정의하는 방법은 무엇입니까?

  12. 12

    적절한 응답을받을 때까지 서버를 재귀적이고 효율적으로 호출하는 방법은 무엇입니까?

  13. 13

    ESLint에서 예상치 못한 토큰을 수정하는 방법은 무엇입니까?

  14. 14

    PRAW가 포함 된 Reddit 봇이 예상치 못한 문자열을 반환하는 이유는 무엇입니까?

  15. 15

    현재 예상치 못한 오류 메시지 "("가 발생한 이유는 무엇입니까?

  16. 16

    내 문자열에 # 0 문자가 포함되어 있는데 ShowMessage가 예상치 못한 출력을내는 이유는 무엇입니까?

  17. 17

    if / else 문을 사용할 때 예상치 못한 동작이 발생하는 이유는 무엇입니까?

  18. 18

    존재하지 않는 라인에서 예상치 못한 입력 종료

  19. 19

    GNU에 대한 "-or"플래그가 내 표현식을 예상치 못한 방식으로 평가하는 이유는 무엇입니까?

  20. 20

    Haskell에서 재귀 데이터 유형을 열거하는 방법은 무엇입니까?

  21. 21

    코드가 재귀에서 나오지 않는 이유는 무엇입니까?

  22. 22

    내 SQL 함수가 예상치 못한 값을 반환하는 이유는 무엇입니까?

  23. 23

    트리에 여러 이미지 형식을 재귀 적으로 나열하는 방법은 무엇입니까?

  24. 24

    트리에 여러 이미지 형식을 재귀 적으로 나열하는 방법은 무엇입니까?

  25. 25

    예상치 못한 결과 : 정의되지 않은 변수에 액세스해도 오류가 발생하지 않는 이유는 무엇입니까?

  26. 26

    재귀 호출 내에서 문자열을 인덱싱하면 다른 결과가 나오는 이유는 무엇입니까?

  27. 27

    피보나치 재귀 시퀀스가 작동하는 이유는 무엇입니까?

  28. 28

    이 재귀 유형 정의에 기본 정의가 필요한 이유는 무엇입니까?

  29. 29

    설정되지 않은 배열 값이 예상치 못한 이유는 무엇입니까?

뜨겁다태그

보관