【问题标题】:Set a return value in prolog在 prolog 中设置返回值
【发布时间】: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小于Dsmaller(C, D)成功),那么你递归检查C是否是CD(你调用mod(C,D,C),这将进入无限递归。这里的一个重要线索是你的结果应该是F,但你在谓词子句中没有引用F。我相信你看到了F的单例变量警告。你怎么办如果smaller(C, D) 成功,真的想发生吗?(提示:你希望F 成为某种东西。)
  • 是的,我想检查这个条件是否正确 c 小于 d 返回 c
  • 那么请仔细阅读我的评论以获得提示。

标签: prolog successor-arithmetics


【解决方案1】:

只需这样做:-

mod(C,D,C):- smaller(C,D)

如果smaller谓词返回true,即C小于D,则返回C。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-10
    • 2022-10-07
    • 2019-05-16
    相关资源
    最近更新 更多