1
好了,所以我在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)并返回迭代(I)和剩余(R),以便它可以在用户输入时显示X/D的结果: divide_by (8,3,I,R)。例如。
当跟踪代码时,我知道我是不正确的,因为第一个增量使它等于0,所以计数是错误的。但我不知道如何声明我是0,而不会在每次循环通过循环时重置它。 (我不想在查询中声明I为0)
我也意识到,当它完成递归时(当X < D)时,我将因为基本情况而被设置为0。
有人会告诉我我该如何解决这个问题吗?
这使得这么多的意义,谢谢!这么简单,但我无法到达那里。 虽然,你会希望> =在第二种情况下,只是<在第一,否则divide_by(6,6,我,R)会给出结果I = 0,R = 6。 – user2096383 2013-02-21 18:20:05
@ user2096383:修复它为你。 – 2013-02-22 01:15:50