2016-04-13 16 views
0
Yukarıdaki programda
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 
    ). 

bulmak için x) X = 3'tür. while x is int de SWI Prolog programı, yani ben arzu çıktı lgstar (8 N 2 'lik bir güç olan bir sayıdır zaman lgstar için cevap almak çalışıyorum, logaritma

Ama

, ben öyle bir şekilde koşulu x is int verebilir

Operatör

beklenen hata alıyorum?

+1

Bu 'while' ne anlama geliyor? – false

+1

Lütfen bunu birkaç kez sormayın. – false

+1

Ve bu sitenin [tur] (http://stackoverflow.com/tour) okuyarak nasıl çalıştığını lütfen bilgilendirin. – false

cevap

0

Bu (arabası) sağlamak egzersiz bulunabilmesi için, ... kesim kaldırmak durumunda ne olacağını anlamak için deneyin pasajı (ipucu: Ben zaten kodunda sahip emniyet koşulunu 'unuttum')

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

Bana yardımcı olduğunuz için teşekkür ederiz. Ben aslında Swi-prolog için yeni ve rehberliğiniz için teşekkür ederim. – Praneeth

+2

'lgstar (-1, X) .' eşit olarak lgstar (1,1)' ... – false

İlgili konular