2016-12-02 48 views
-1

功能是功能的序言與回溯

backtracking function f(n,k)

f(n, k) = n * k,   if n = k 
     = n ∗ f(n−1, k), if n > k 
     = k ∗ f(n, k−1), if n < k 

Prolog的謂詞fn/3爲了實現上述功能分配

你能不能幫我解決以上功能? 謝謝

+0

查看[這個問題](http://stackoverflow.com/q/40920830/1812457)瞭解如何提問的一個例子,以及一個想法如何自己解決它。 – 2016-12-02 12:56:11

+0

你現在試過了什麼? – max66

回答

0

你可以試試下面的謂詞。

f(N, K, R):- 
    N = K , 
    R is N*K,!. 

f(N, K, R):- 
    N>K, 
    Nx is N-1, 
    f(Nx,K,Res), 
    R is N*Res. 

f(N, K, R):- 
    N<K, 
    Kx is K-1, 
    f(N,Kx,Res), 
    R is K * Res. 

該R將有你想要的結果。

+0

非常感謝,它效果很好 –