反向因子与prolog

时间:2015-03-01 18:09:42

标签: prolog factorial

我正在制作这个程序,以便在prolog中找到给定数字的反向因子,但它不起作用它每次都返回false。这是代码。

fr(X,Y):-fr(X,2,Y).

fr(X,P,Y):- X =< 1,Y is P-1.
fr(X,Q,Y):-D is X/Q,
      H is X mod Q,
      H =:= 0,
      Q1 is Q+1,
      fr(D,Q1,Y).

这个代码应该是谁工作的,它需要2个这样的参数(24,Who)。从两个参数函数我调用一个3参数函数,它基本上检查给定的数字是否除以2,如果是,那么它在Q中递增并检查数字是否除以3,依此类推。

1 个答案:

答案 0 :(得分:1)

首先,退一步,留下旧代码。然后继续这样:

  1. 使用代替普通的Prolog算术谓词,如is/2和朋友!

  2. 专注于解决问题的“关系”方面。

    看看this very related question以及那里提出的好答案。

  3. 小心过早优化!

    一旦你知道知道某些域的细节,不要回避优化:它可以是great fun并且还有很多值得学习的东西! (但要注意收益递减规律。)