2016-04-13 154 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 
    ). 

在上面的程序中,我试图得到lgstar的答案,当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

我提供这个(越野车),内容片段在你锻炼,请试着去了解发生了什么,如果你取出切成......(提示:I“忘记”你已经在你的代码中的安全状况)

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).''''gl' lgstar(1,1)'... – false