Prolog循环和条件语句?

Prolog循环和条件语句?,prolog,Prolog,在Prolog中是否有类似于for循环和if-then条件的东西?如果您正在寻找此类语句,那么您就没有在Prolog中思考:) 只是开玩笑,顺便说一句,这里没有直译或for和if/else,但是你可以想想它们在序言中应该是怎样的: 只要有两条在不同条件下匹配的规则,就可以得到if/else语句 循环的可以使用两个递归规则来完成,一个是基本情况,它不依赖于自身来保持,而另一个在循环内执行您想要执行的操作并遵循自身 if/then/else可通过(->)/2和(;)/2获得: 有时这是有用的。但一

在Prolog中是否有类似于for循环和if-then条件的东西?

如果您正在寻找此类语句,那么您就没有在Prolog中思考:)

只是开玩笑,顺便说一句,这里没有直译或for和if/else,但是你可以想想它们在序言中应该是怎样的:

  • 只要有两条在不同条件下匹配的规则,就可以得到if/else语句
  • 循环的可以使用两个递归规则来完成,一个是基本情况,它不依赖于自身来保持,而另一个在循环内执行您想要执行的操作并遵循自身

if/then/else可通过(->)/2和(;)/2获得:


有时这是有用的。但一般来说(当条件包含变量时),它会使程序不健全和不完整。只要有可能用模式匹配来描述条件,就应该改用模式匹配。然后,您不仅可以检查,还可以生成解决方案。

如果您使用prolog进行循环思考,那么您可能想错了。如果你有一个特别的问题,可以问一下。我同意。在Prolog中使用循环和条件语句几乎总是会增加复杂性并降低Prolog的实用性。你需要考虑递归和统一。否则,您最好使用C#或Java。或者这是一个“学术”性质的问题?是的,这与学校有关……那么,你不想接受下面的一个答案吗?-1:Prolog中有一个if-then-else结构,它在复杂的规则中非常有用。是的,但你应该避免使用它,我们不是在讨论复杂的规则。如果你先教别人一个坏习惯,然后再教别人一个好习惯,你将永远无法恢复:)唉,不应该避免,应该教给别人。如果我们不教它,人们就会开始编写带有红色切口的程序。
(    If ->
     Then
;    Else
)