【问题标题】:Prolog can somebody explain this recursionProlog 有人可以解释这个递归吗
【发布时间】:2016-10-29 22:12:36
【问题描述】:

有人可以解释以下 Prolog 递归是如何工作的吗?

findRoute(A,A,_).
findRoute(A,C,Path) :- 
    nextCnvZone(A,B),
    \+ member(B,Path), 
    findRoute(B,C,[B|Path]).

我可以理解第二部分,但无法理解第一部分,即第一个 findRoute(A,A,_). 在做什么?

【问题讨论】:

标签: prolog


【解决方案1】:

它是停止递归的部分,即当第一个参数等于第二个参数时,递归停止,并在所有递归级别返回true(如果达到该级别)。

一般来说,它的规则是第一个参数等于第二个。 (如果两个变量都给出,则检查是否为真,如果第二个是变量并且给出第一个,则将第二个的值分配给第一个,等等)

?- findRoute(1, 1, 5).
true
?- findRoute(1, 2, 5).
false
?- findRoute(1, X, 5).
X = 1
?- findRoute(X, 2, 5).
X = 2

【讨论】:

  • 你能否详细说明第二段..括号内的文字。
猜你喜欢
  • 1970-01-01
  • 2018-03-19
  • 2018-07-23
  • 1970-01-01
  • 2012-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多