Je travaille sur un devoir, composé de 2 parties. La première consiste à écrire un programme Prolog qui vérifie si une certaine paire X, Y appartient à un http://en.wikipedia.org/wiki/Triangular_number. Par exemple: (2, 3) = true; (4, 10) = vrai et cetera.Prolog, nombres triangulaires, accumulateurs et récursion de la queue
La première solution utilise la récursivité « ordinaire », et j'avons résolu ce comme ceci:
triangle(0, 0).
triangle(X, Y) :- X > 0, Y > 0, A is X - 1, B is Y - X, triangle(A, B).
La deuxième partie est de résoudre ce en utilisant la récursion arrière/un accumulateur, en utilisant un prédicat triangle/3. Bien que j'aie utilisé un accumulateur dans une autre affectation, dans laquelle l'utilisation était assez évidente, j'ai donc une idée générale de la façon d'utiliser un accumulateur, je suis assez perplexe quant à la façon de l'utiliser dans ce contexte. Donc, je ne cherche pas un algorithme, je préfère résoudre cela moi-même, mais plus d'un conseil pratique sur la façon d'appliquer un accumulateur dans ce contexte.
Ah, merci pour cela. Je m'interrogeais sur la récursivité de la queue de ma solution récursive «normale», puisque comme vous le dites, j'appelle triangle/2 après avoir fait l'arithmétique. Merci de m'avoir signalé que le temps prédicait aussi :) – Oxymoron