문제
현재 행을 감안할 때 Pascal 's Triangle에서 다음 행을 반환하는 기능을 작성했습니다.
pascal_next_row([X],[X]).
pascal_next_row([H,H2|T],[A|B]):-
pascal_next_row([H2|T],B),
A is H + H2.
삼각형에서 Nth Row를 찾고 싶어요. pascal(5,Row)
, Row=[1,5,1,0,1,0,5,1]
. 나는 이것을 가지고있다:
pascal(N,Row):-
pascalA(N,[1,0],Row).
pascalA(N,R,_Row):-
N > 0,
M is N-1,
next_row([0|R],NR),
pascalA(M,NR,NR).
확실히 Row
전에 발견 된 마지막 것입니다 n==0
. 어떻게 반환 할 수 있습니까? 나는 사용 시도했다 is
키워드, 즉 Row is NR
그러나 그것은 허용되지 않습니다. 도움이 있습니까?
사용하려고합니다 is
목록에서 나를 얻을 수 있습니다.
! Domain error in argument 2 of is/2
! expected expression, but found [1,4,6,4,1,0]
! goal: _23592586 is[1,4,6,4,1,0]
해결책
기본 케이스를 수행하고 N > 0
계산 취소 ...
pascalA(N,R,_Row):-
N > 0, %% this evaluates to false so the calculation gets canceled
M is N-1,
next_row([0|R],NR),
pascalA(M,NR,NR).
pascalA(0,R,R). %% this should be the base case... hope I got it correct...
pascalA(N,R,_Row):-
M is N-1,
next_row([0|R],NR),
pascalA(M,NR,_Row).
다른 팁
n = 0 인 파스 칼라의 기본 케이스가 필요합니다.
제휴하지 않습니다 StackOverflow