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 回答