0

以下代码

itD(Start, End, Distance, Max) :-
   Distance < Max,
   newDistance is Distance+1,
   itD(Start, End, newDistance, Max).

给了我一个非常奇怪的失败。

  2    2  Call: 0<15 ? 
  2    2  Exit: 0<15 ? 
  3    2  Call: newDistance is 0+1 ? 
  3    2  Fail: newDistance is 0+1 ? 

我真的不明白。因为我使用的是非常基本的算术。

| ?- Distance is 1, NewDistance is Distance+1.
  Distance = 1
  NewDistance = 2
  yes

如您所见,我没有任何问题,所以在控制台中编写相同的操作。

如果有人能帮我解决这个奇怪的算术问题,我会非常高兴。

4

1 回答 1

2

就在我发布这篇文章后的第二秒,我意识到 prolog 中的变量需要以大写字母开头,我想这对于 Prolog 中的新手来说是一个很常见的错误。

希望这对将来的人有所帮助。

于 2013-09-19T08:55:27.860 回答