Tuesday, 6 November 2007

domains
predicates
factorial(real,real)
factorial(real,real,real,real)
myRule(real,real)
fibonacci(real,real)
fibonacci(real,real,real,real,real)
clauses
%___________factorial_polimorf____________________________________________________

factorial(Numar,Rezultat):-factorial(Numar,1,1,Rezultat).
factorial(0,_,1,1).
factorial(Numar,Numar,Rezultat,Rezultat):-!.
factorial(Numar,Contor,RezultatIntermediar,Rezultat):-
ContorIntermediar=Contor+1,
myRule(RezultatIntermediar,Rezultat),
ContorIntermediar<=Numar,
RezultatIntermediarActualizat=RezultatIntermediar*ContorIntermediar,
factorial(Numar,ContorIntermediar,RezultatIntermediarActualizat,Rezultat).
%_________________________________________________________________________________

myRule(X,Y):-bound(X),bound(Y),X<=Y,!;
bound(X),free(Y),!;
free(X),bound(Y),!.
%_________________________________________________________________________________

fibonacci(0,0).
fibonacci(1,1).
fibonacci(Numar,Rezultat):-fibonacci(Numar,1,0,1,Rezultat).
fibonacci(Numar,Contor,RezultatIntermediar1,RezultatIntermediar2,Rezultat):-
ContorIntermediar=Contor+1,
ContorIntermediar<=Numar,
%myRule(),
RezultatIntermediar=RezultatIntermediar1+RezultatIntermediar2,
RezultatIntermediar1=RezultatIntermediar2,
write("Ri1=",RezultatIntermediar1),
RezultatIntermediar2=RezultatIntermediar,
write("Ri2=",RezultatIntermediar2),
fibonacci(Numar,ContorIntermediar,RezultatIntermediar1,RezultatIntermediar2,Rezultat).
%_____________________________________________________________________________________________

No comments: