1

現在の行を指定して、パスカルの三角形の次の行を返す関数を作成しました。

pascal_next_row([X],[X]).
pascal_next_row([H,H2|T],[A|B]):-
    pascal_next_row([H2|T],B),
    A is H + H2.

pascal(5,Row)三角形のn 番目の行を見つけられるようにしたいです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]
4

2 に答える 2

0

N = 0 である pascalA の基本ケースが必要です。

于 2009-11-15T15:12:42.797 に答える