【发布时间】:2013-02-21 17:27:35
【问题描述】:
好的,所以我是 Prolog 的初学者,所以如果我不能非常清楚地表达我的问题,我很抱歉,但这是我正在努力的地方:
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 的结果: 除数(8,3,I,R)。例如。
在跟踪代码时,我知道我是不正确的,因为第一个增量使其等于 0,因此计数是错误的。但是我不知道如何声明 I 是 0 而不会在每次通过循环递归时重置。 (我不想在查询中将 I 声明为 0)
我还意识到,当它完成递归时(当 X
谁能告诉我如何解决这个问题?
【问题讨论】:
标签: recursion prolog increment