1

最近、論理プログラミングの大学レベルの試験で遭遇した質問でodd/1、与えられた値が奇数かどうかを判断する Prolog 述語 をプログラミングするように求められました。

s/1実装は、指定された要素の後続 (つまり X + 1) を評価する、既に指定された predicate を使用することになっていました。odd/1これは述語の実装のために与えられた解決策でした:

odd(s(0)):-!. % 1 is the first odd number
odd(s(s(X))):- odd(X). % A number s(s(X)) (i.e X + 2) is odd if X is odd as well
  1. !最初の式の は実際に何らかの目的を果たしますか? この後、後戻りを防いでいるのはわかっていますが、次のような表現はありませんか? これは、解決アルゴリズムがこの時点で停止するということですか?
  2. 練習のために後継述語を実装しようとしましたが、実装s/1できませんでした。(どのように) この述語を Prolog で実装できますか?
4

1 に答える 1