2017-06-12 11 views
1

Wäre es möglich, "pow" mit "add" Prädikat (oder einfach X is Y + Z) zu machen?
Ich mache dies:pow (X, Y, Z) <=> Z = X^Y mit add

pow(0,1,1). 
pow(_,0,1). 
pow(X,Y,Z) :- Y1 is Y - 1, pow(X,Y1,Z1), Z is Z1 * X. 

aber ich will es auch machen mit "+" (nur für die Praxis) wie 3^2 = 3 * 3 = 3 + 3 + 3

+1

Nun können Sie Multiplikation in Bezug auf die Addition schreiben ... –

+0

'pow (X, Y, Z): - Z ist X^Y + 0.' – false

Antwort

1

Sie die Multiplikation schreiben kann (mul/3) in Bezug auf die Zugabe. Wie:

pow(0,1,1). 
pow(_,0,1). 
pow(X,Y,Z) :- 
    Y > 1, 
    Y1 is Y - 1, 
    pow(X,Y1,Z1), 
    mul(Z1,X,Z). %% originally: Z is Z1 * X. 

mul(0,_,0). mul(I,A,R) :- I > 0, I1 is I-1, mul(I1,A,R1), R is R1 + A.

Normalerweise wird eine grundlegende Übung ist zusätzlich, Multiplikation und Macht predictates mit der Peano Zahlendarstellung zu schreiben. In diesem Fall wird der Zusatz mit dem Nachfolger funktor geschrieben.

Verwandte Themen