Ладно, так что я новичок в Прологе, так что я извиняюсь, если я совсем не могу получить мой вопрос по очень ясно, но это, где я борюсь:Пролог - сделать рекурсивный делитель
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.
Я пытаюсь написать программу, которая будет принимать два аргумента (X и D) и вернуть Iterations (I) и Remainder (R), чтобы он мог отображать результат X/D, когда пользователь вводит: divide_by (8,3, I, R). например.
При отслеживании кода я знаю, что я неверен, потому что первое приращение делает его равным 0, поэтому счетчик ошибочен. Но я не знаю, как объявить, что я 0, без его сброса при каждом повторении цикла. (Я не хочу объявлять I как 0 в запросе)
Я также понял, что когда он закончит рекурсию (когда X < D), тогда я буду установлен в 0 из-за базового футляра.
Может ли быть любезным, чтобы показать мне, как я могу это исправить?
Это делает так много смысла, спасибо! Так просто, но я просто не мог туда добраться. Хотя во втором случае вы хотите> = во втором случае, а просто <в первом, иначе divide_by (6,6, I, R) даст результат I = 0, R = 6. – user2096383
@ user2096383: Исправлено это для вас , –