具有回溯功能的prolog功能

时间:2016-12-02 09:23:30

标签: prolog predicate backtracking

功能是

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分配以实现上述功能

你能帮我解决一下这个功能吗? 谢谢

1 个答案:

答案 0 :(得分: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会得到你想要的结果。