1
我寫了一個函數帕斯卡三角下一行返回給定當前行:帕斯卡在序言三角
pascal_next_row([X],[X]).
pascal_next_row([H,H2|T],[A|B]):-
pascal_next_row([H2|T],B),
A is H + H2.
我希望能夠找到在三角形,例如第n行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).
顯然應該是最後一個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]
我似乎無法在列表中使用'is'函數。我正在使用SICStus,並且出現錯誤 '!參數2中的域錯誤是/ 2 !預期表達,但發現[1,4,6,4,1,0] !目標:_23592586是[1,4,6,4,1,0]' – blork 2009-11-15 15:35:25
哦對不起...我忘了它是一個列表...我從內存中寫這個東西(閱讀:沒有測試).. 。我認爲用'='代替'is'可能會起作用... – Egon 2009-11-15 19:24:45
只是使用'pascalA(0,R,R).'應該可以... – Egon 2009-11-15 19:26:28