1
dec_bin(1,1).
dec_bin(N,B):-N>1,X is N mod 2,Y is N//2,dec_bin(Y,B1),B=B1+X.

これにより、出力が得られます:

?- dec_bin(12,K).
K = 1+1+0+0.

しかし、「+」記号なしで 1100 だけが必要です。誰か助けてください..

4

1 に答える 1

2

あなたが探しているのは だと思いますatom_concat/3。また、手順が入力番号 0 で失敗していることにも注意してください。

dec_bin(0,'0').
dec_bin(1,'1').
dec_bin(N,B):-N>1,X is N mod 2,Y is N//2,dec_bin(Y,B1),atom_concat(B1, X, B).

?- dec_bin(12,K)。K = '1100'

于 2012-12-13T17:22:13.510 に答える