0

这是序言中的一段密码算法

sum1( [D1|N1], [D2|N2], [D|N], C1, C, Digs1, Digs)  :-
  sum1( N1, N2, N, C1, C2, Digs1, Digs2),
  digitsum( D1, D2, C2, D, C, Digs2, Digs).

如下解释

sum1( N1, N2, N, C1, C, Digits1, Digits)
where N1, N2 and N are our three numbers, 
      C1 is carry from the right, and
      C is carry to the left (after the summation).
      Digits1 is the list of available digits for instantiating the
      variables in N1, N2, and N.
      Digits is the list of digits that were not used in the
      instantiation of these variables.

我真的不明白C1是什么意思sum1( [D1|N1], [D2|N2], [D|N], C1, C, Digs1, Digs),因为C2代表右进位,C代表左进位,那么C1代表什么?

4

1 回答 1

1

C,C1,C2 只能假设 0,1 值。算术规则要求 C1 在第一次调用时为 0,C 在最后一次调用时为 0。C2 在递归调用中变为 C,然后在求和后传播进位。C1 是进位加到 N1,N2 得到 N。

于 2013-05-27T05:39:49.980 回答