2016-04-13 153 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