Ok, donc je suis un débutant en Prolog, donc je suis désolé si je ne peux pas tout à fait poser ma question à travers très clairement, mais c'est là que je me bats:Prolog - faire un diviseur récursive
divide_by(X, D, I, R) :- (D > X), I is 0, R is X.
divide_by(X, D, I, R) :-
X >= D,
X_1 is X - D,
I_1 is I + 1,
divide_by(X_1, D, I_1, R),
R is X_1.
J'essaye d'écrire un programme qui acceptera deux arguments (X et D) et retournerai les itérations (I) et le reste (R) afin qu'il puisse afficher le résultat de X/D quand l'utilisateur entre: divide_by (8,3, I, R). par exemple.
Lors du suivi du code, je sais que I est incorrect car le premier incrément le rend égal à 0 et donc le compte est faux. Mais je ne sais pas comment déclarer I est 0 sans qu'il se réinitialise chaque fois qu'il récursse à travers la boucle. (Je ne veux pas déclarer I comme 0 dans la requête)
J'ai également réalisé que quand il a fini de récurer (quand X < D) alors I va être mis à 0 à cause du cas de base.
Est-ce que quelqu'un serait assez aimable pour me montrer comment je peux résoudre ce problème?
Cela est tellement logique, merci! Tellement simple, mais je ne pouvais tout simplement pas y arriver. Cependant, vous voudriez> = dans le second cas et juste
user2096383
@ user2096383: Correction du problème pour vous . –