2013-12-12 59 views
1

我們必須在序言Q(a,b,n)中找到一個函數< b和以下方式: Q(a,b,n)= max {k∈N| b ^的k - 一個-1K-< = N}如何計算prolog中的函數?

這裏是我的代碼,但它總是給我一個 「不」

qs(A,B,N,R,C) :- R>N, R is B^C-A^C. 
qs(A,B,N,R,C) :- A<B, C1 is C, R is B^C1-A^C1, C1 is C+1, R=<N, qs(A,B,N,R,C1). 
qs(A,B,N,R) :- A<B, C is 0, qs(A,B,N,R,C). 

例如,如果我有Q(2,3,18)輸出應該是2.

+0

我得到了'qs(2,3,18,R)'的「實例化錯誤」。你真的應該告訴這個函數的實際定義。我們只能猜測。 – false

+0

而'qs(3,2,1,R).'失敗。對? – false

+0

我認爲定義在那裏..有一些錯誤的帖子,所以我再次編輯它,在這裏你走! :) – Noisie

回答

1
qs(A, B, N, R) :- 
    A < B, 
    once((
     length(_,K), 
     B^K - A^K > N 
    )), 
    R is K-1. 
0

我相信prolog使用**來取冪,而不是^(假設這就是你想要做的)。

+0

其實,兩個作品。 (^)/ 2的優點是如果兩個操作數都是整數,則生成整數值,而(**)/ 2總是生成一個浮點數。 – false