Algorithm Prolog重现算法 foo(0,Y,Z):-Z是Y。 foo(X,0,Z):-Z是X。 foo(X,Y,Z):-X>=Y,M1是X-2,foo(M1,Y,Zx),Z是Zx+Y。 foo(X,Y,Z):-Y

Algorithm Prolog重现算法 foo(0,Y,Z):-Z是Y。 foo(X,0,Z):-Z是X。 foo(X,Y,Z):-X>=Y,M1是X-2,foo(M1,Y,Zx),Z是Zx+Y。 foo(X,Y,Z):-Y,algorithm,recursion,prolog,Algorithm,Recursion,Prolog,我记得在你的函数中 foo(0,Y,Z) :- Z is Y. foo(X,0,Z) :- Z is X. foo(X,Y,Z) :- X>=Y, M1 is X-2, foo(M1, Y, Zx), Z is Zx + Y. foo(X,Y,Z) :- Y<X, N1 is Y-3, foo(X, N1, Zx), Z is Zx + X. 好吧,我做了这些更改,但仍然没有输出任何内容。。。只是一个“不”@TravisDelly你应该展示你是如何运行这个程序的。对我有用。@Tra

我记得在你的函数中

foo(0,Y,Z) :- Z is Y.
foo(X,0,Z) :- Z is X.
foo(X,Y,Z) :- X>=Y, M1 is X-2, foo(M1, Y, Zx), Z is Zx + Y.
foo(X,Y,Z) :- Y<X, N1 is Y-3, foo(X, N1, Zx), Z is Zx + X.

好吧,我做了这些更改,但仍然没有输出任何内容。。。只是一个“不”@TravisDelly你应该展示你是如何运行这个程序的。对我有用。@TravisDelly-您正在尝试哪些输入值?那么您希望输出什么呢?我希望(5,6,Z)@TravisDelly的输出为Z=18:
?-foo(5,6,Z)。Z=18。
您所展示的定义让我有点困扰的是,这4种可能性并不是相互排斥的(只有最后两种是)。您并不是在说如何阅读:您是要提交到第一个匹配的参数,还是foo()对于相同的参数可以有多个返回值?