【发布时间】:2017-12-01 13:30:33
【问题描述】:
我正在尝试在 prolog 中的两个 peano's number 的 mod 函数中编写简单的案例,提出一些案例它给了我错误的答案我不知道我的代码有什么问题
简单的情况是 如果 C 小于 D,则返回 C
mod(C,D,F):- smaller(C,D) -> mod(C,D,C).
我没有输出
谢谢。
【问题讨论】:
-
如果
C小于D(smaller(C, D)成功),那么你递归检查C是否是C模D(你调用mod(C,D,C),这将进入无限递归。这里的一个重要线索是你的结果应该是F,但你在谓词子句中没有引用F。我相信你看到了F的单例变量警告。你怎么办如果smaller(C, D)成功,真的想发生吗?(提示:你希望F成为某种东西。) -
是的,我想检查这个条件是否正确 c 小于 d 返回 c
-
那么请仔细阅读我的评论以获得提示。
标签: prolog successor-arithmetics