具有回溯功能的 prolog 中的函数

Function in prolog with 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赋值以实现上述功能

你能帮我解决上面的功能吗? 谢谢

您可以尝试使用以下谓词。

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 会得到你想要的结果。