【发布时间】:2009-10-12 14:53:25
【问题描述】:
我怎样才能做到这一点:
给出以下每个谓词的尾递归定义。power(X,Y,Z):XY=Z。gcd(X,Y,Z):X 和 Y 的最大公约数是 Z。
@987654323 @:Sum 是 L 中元素的总和。
到目前为止我已经这样做了,但不确定是否正确
power(_,0,1) :- !.
power(X,Y,Z) :- Y1 is Y - 1,power(X,Y1,Z1),Z is X * Z1.
sum(void,0).
sum(t(V,L,R),S) :- sum(L,S1),sum(R,S2), S is V + S1 + S2.
【问题讨论】:
-
如果您不确定它是否正确,请测试它。
-
Frank:如果您将文本缩进 4 个空格,它会将其格式化为代码。编辑您的问题并尝试一下。编辑器工具栏中的橙色问号链接到具有其他格式标记的文档。
标签: recursion prolog tail-recursion greatest-common-divisor