L'incrémentation des numéros en prolog
Je suis en train de mettre en œuvre un incrément dans le prologue, et nous avons écrit le code suivant:
coordenate(X,Y,Z):-
X is 1,
Y is 1,
Z is 1,
coordenate(X1,Y1,Z1),
X1 is X+1,
Y1 is Y+1,
Z1 is Z.
Aussi j'ai essayé:
coordenate(X,Y,Z):-
X is 1,
Y is 1,
Z is 1,
coordenate(X+1,Y+1,X+1).
Aucune de ces travaux. Quelqu'un peut-il expliquer pourquoi?
Il est orthographié de coordonnées.
Veuillez être le plus descriptif avec "pas de travail". N'est-il pas de compilation, de donner de mauvais résultats, entrer dans une boucle infinie, manger votre chaton? Nous ne sommes pas une lecture de l'esprit compilateur et nous n'avons aucune idée de ce qui coordonnent le prédicat est censé faire
Quel est le but de votre code? Maintenant, il va courir dans une récursion infinie. Nous donner un contexte plus large afin que nous puissions comprendre votre problème
Désolé, mon code ne fonctionne pas, il compile mais ne fonctionne pas, et quand je le lance, j'ai du l'arrêter à l'aide de pause.
Veuillez être le plus descriptif avec "pas de travail". N'est-il pas de compilation, de donner de mauvais résultats, entrer dans une boucle infinie, manger votre chaton? Nous ne sommes pas une lecture de l'esprit compilateur et nous n'avons aucune idée de ce qui coordonnent le prédicat est censé faire
Quel est le but de votre code? Maintenant, il va courir dans une récursion infinie. Nous donner un contexte plus large afin que nous puissions comprendre votre problème
Désolé, mon code ne fonctionne pas, il compile mais ne fonctionne pas, et quand je le lance, j'ai du l'arrêter à l'aide de pause.
OriginalL'auteur Bernardo Ortiz | 2011-11-21
Vous devez vous connecter pour publier un commentaire.
Ni programme des œuvres, car ils contiennent une récursion infinie. Vous appelez
coordenate
à l'intérieur de lui-même, sans condition d'arrêt.Alors, pour vous aider avec votre problème d'origine de l'incrémentation d'une variable en place: vous ne pouvez pas le faire en Prolog. Une fois qu'une variable est liée, vous ne pouvez pas modifier sa liaison. Lors de la programmation en Prolog, vous devez penser en termes de les relations et la récursivité, non mutable état. Voici comment faire pour incrémenter en Prolog:
Noter que les deux variables sont nécessaires: une pour tenir la valeur d'origine et l'autre pour la valeur incrémentée. Faire quelque chose d'utile avec le calcul que ce prédicat effectue, les deux variables doivent être des arguments du prédicat. La première est conçue comme un argument d'entrée, le second comme un argument de sortie (même si cela n'est pas reflété dans la langue, il résulte de la façon dont
is/2
œuvres).OriginalL'auteur Fred Foo