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.
所以这是我的计划,这就是我想要完成的事情
(,)= {
≤0
≤0
+( - 2,)≥
+(, - 3)&lt; }
为什么我的程序没有输出任何内容? 这就是我想我说的 -
如果X = 0,foo(0,Y,Z),则返回Z作为Y. 如果Y = 0,foo(0,Y,Z),则返回Z作为X。
如果X> = Y,则再次执行foo,一旦返回,则返回Z作为Zx + Y. 如果是X.
我的想法是否正确?
答案 0 :(得分:0)
我记得你的功能是
≤ 0
≤ 0
即“较少 或等于零”而不是“等于零”。
所以我想那个
foo(0,Y,Z) :- Z is Y.
应该是
foo(X, Y, Y) :- X =< 0.
那个
foo(X,0,Z) :- Z is X.
应该是
foo(X, Y, X) :- Y =< 0.