私は 2 つの部分からなる宿題に取り組んでいます。1 つ目は、特定のペア X、Y がhttp://en.wikipedia.org/wiki/Triangular_numberに属しているかどうかをチェックする Prolog プログラムを作成することです。例: (2, 3) = true; (4, 10) = true など。
最初の解決策は「通常の」再帰を使用し、私はこれを次のように解決しました:
triangle(0, 0).
triangle(X, Y) :- X > 0, Y > 0, A is X - 1, B is Y - X, triangle(A, B).
2 番目の部分は、三角形/3 述語を使用して、末尾再帰/アキュムレータを使用してこれを解決することです。私は別の割り当てでアキュムレータを使用しましたが、その使用は非常に明白でした。そのため、アキュムレータの一般的な使用方法については理解していますが、このコンテキストでの使用方法については非常に困惑しています。
したがって、私はアルゴリズムを探しているのではなく、むしろ自分で解決したいと思っていますが、このコンテキストでアキュムレータを適用する方法についてのより実用的なアドバイスです。