Sunteți pe pagina 1din 1

Functii Recursive

1).Determinati predicatul suma(A,B,R) care gaseste cu ajutorul recursiei,


suma a 2 numere naturale.
Clauses
1). suma(A,B,R):-A=0,R=B,!.
2). suma(A,B,R):-A1=A-1,suma(A1,B1,R),B=B1+1.
suma(3,4)
suma(2,5)
suma(1,6)
suma(0,7)
2). Sa se determine produsul cu ajutorul recursiei, a 2 numere naturale.
Clauses
1).produs(A,B,R):-A=1,R=B,!.
2).produs(A,B,R):-A1=A-1,produs(A1,B,R1),R=R1+B.
/* Produs(4,3,R):-produs(3,3,R1),R=R1+3
produs(3,3,R):-produs(2,3,R2),R=R2+3
produs(2,3,R):-produs(1,3,R3),R=R3+3
produs(1,3,R):-R=3 */
3).Determinati functia Akermann
ak(n,m)={m+1,daca n=0
{ak(n-1,1), daca n>0,m=0
{ak(n-1,ak(n,m-1)), n>0,m>0
Clauses
1).ak(N,M,R):-N=0,R=M+1.
2).ak(N,M,R):-N>0,M=0,N1=N-1,ak(N1,1,R).
3).ak(N,M,R):-N>0,M>0,N1=N-1,M1=M-1,ak(N,M1,R1),ak(N1,R1,R).
4). Sa se scrie predicatul recursive care calculeaza N^k(N la puterea K)
Exp(N,K,R):-K=0,R=1,!.
Exp(N,K,R):-K>1,K1=K-1,exp(N,K1,R1),R=R1*N

S-ar putea să vă placă și