2016-04-13 5 views
0
lgstar(1,0). 
lgstar(N,Answer):- 
    (N = 2**x while x is int -> 
     N > 1, 
    N1 is N/2, 
    logbN(N1,2,A), 
    Answer is A + 1 
    ). 

上記のプログラムでは、Nが2の累乗数であるとき、つまりlgstar(8、 x)はX = 3である。SWI Prologプログラムで対数を見つける

しかし、while x is intで、私はエラーに

を取得しています演算子は

を期待し、私は、このような方法で、条件x is intを与えることができますか?あなたが行使するため

+1

「while」は何を意味していますか? – false

+1

これを何度も尋ねないでください。 – false

+1

そして、[ツアー](http://stackoverflow.com/tour)を読んで、このサイトの仕組みを知ってください。 – false

答えて

0

私はこの(バギー)を提供するが、スニペット、あなたがカットを削除するとどうなるかを理解してみてください...(ヒント:私はすでにあなたのコードを持っている安全条件「を忘れてしまった」)

lgstar(1,0) :- !. 
lgstar(N,N_Lg) :- M is N>>1, lgstar(M,M_Lg), N_Lg is M_Lg+1. 
+0

私を助けてくれてありがとう。私は実際にSwi-prologの新人です。あなたの指導に感謝します。 – Praneeth

+2

'lgstar(-1、X).'同様に' lgstar(1,1) '... – false

関連する問題