小编Suz*_* L.的帖子

回溯递归谓词

假设我们有以下谓词(这是Prolog中编程的一个例子):

[F0] isInteger(0).
[F1] isInteger(X):- isInteger(Y), X is Y+1.
Run Code Online (Sandbox Code Playgroud)
  1. 查询的第一个结果是Integer(R),标记位于F0,并返回R = 0

  2. 如果用户按下; ,标记放在F1,我们移动到subgoal(isInteger(Y),满足F0)和R = 1.

我理解上面的内容.现在我的问题是:

  1. 如果用户按下; 再次,标记在哪里?搜索如何继续返回R = 2?我试图理解本书第78-79页中的图像,但我不清楚.我发现的在线教程不会在递归的情况下处理回溯.

我正在寻找任何解释存在递归的回溯的教程,希望能够帮助我理解堆栈内容的图像.

提前谢谢Suzanne

prolog failure-slice

9
推荐指数
1
解决办法
1443
查看次数

标签 统计

failure-slice ×1

prolog ×1