2010-10-18 141 views
1

Prolog中有什麼東西可以像for循環一樣工作嗎?序言循環和條件語句?

+7

如果你正在考慮與prolog循環,你可能會想錯了。如果您遇到特定問題,請提出相關問題。 – JoshD 2010-10-19 00:01:07

+1

我同意。在Prolog中使用循環和條件幾乎總會增加複雜性並降低Prolog的實用性。你需要考慮遞歸和統一。否則,你可能會使用C#或Java。或者這是一個「學術」性質的問題? – Enigmativity 2010-10-19 00:26:35

+0

你這與學校有關...所以。 – 2010-10-19 01:41:04

回答

5

如果您正在尋找這樣類型的語句,那麼你不是在Prolog的思維:)

開玩笑的,順便說一下有沒有簡單的翻譯或與if/else語句,但你可以考慮一下他們應該如何在序言:

  • 的if/else語句可以通過僅僅有匹配在不同條件
  • for循環一個可以用兩個遞歸規則來完成這兩個規則來獲得,一個是基本情況,它不依賴於它自己keepon,而另一個做你打算做的內部循環,並遵循自己..
+1

-1:在Prolog中有一個if-then-else結構,它在複雜的規則中非常有用。 – 2010-10-19 10:10:15

+3

是的,但你應該避免使用它,我們不是在討論複雜的規則。如果你在一個好的人面前教一個壞習慣,你永遠不會恢復:) – Jack 2010-10-19 12:20:43

+2

恕我直言,它不應該被避免,它應該被教導。如果我們不教它,人們將開始編寫紅色剪輯的程序。 – 2010-10-20 15:00:54

9

if/then/else可以獲得( - )/ 2和(;)/ 2:

( If -> 
    Then 
; Else 
) 

有時這是有用的。一般來說(當條件包含變量時),它會使你的程序不健全和不完整。只要有可能用模式匹配來描述條件,就應該使用模式匹配來代替。您不僅可以檢查,而且可以生成解決方案。