Documente Academic
Documente Profesional
Documente Cultură
fac(5) =5*fac(4)=
=5*(4*fac(3))=
=5*(4*(3*fac(2)))=
=5*(4*(3*(2*fac(1))))=
=5*(4*(3*(2*(1*fac(0)))))=
=5*(4*(3*(2*(1*1))))=
=5*(4*(3*(2*1)))=
=5*(4*(3*2))=
=5*(4*6)=
=5*24=
=120.
ac(2,2)=ac(1,ac(2,1)) (c)
= ac(1,ac(2,0)) (c)
= ac(1,1) (b)
= ac(0,ac(1,0)) (c)
= ac(0,1) (b)
= 2 (a)
Programarea calculatoarelor
= 3 (a)
= ac(0,ac(1,2)) (c)
= ac(0,ac(1,1)) (c)
= ac(0,ac(1,0)) (c)
= ac(0,1)
(b)
= 2 (a)
= 3 (a)
= 4 (a)
= 5 (a)
=ac(0,ac(1,4))
(c)
= ac(0,ac(1,3)) (c)
= ac(0,ac(1,2)) (c)
= ac(0,ac(1,1)) (c)
= ac(0,ac(1,0)) (c)
= ac(0,1) (b)
= 2 (a)
= 3 (a)
= 4 (a)
= 5 (a)
= 6 (a)
=7 (a)
|- 1, daca n=0,
incons(n)= | (3)
|- n*incons(n+1) altfel.
Programarea recursiva
este inconsistenta, deoarece valorile ei pentru n>0 nu pot fi calculate. Intr-
adevar, modul în care este descrisa autoreferinta din (3), nu permite utilizarea
valorii incons(0)=1. Aceasta definitie devine însa consistenta, daca definitia
devine:
incons: N- U {0} -> Z.
fib(5)=fib(3) + fib(4)
=(fib(1)+fib(2))
= 1 +(fib(0)+fib(1))
= 1 +1
= +2
=3 + (fib(2)+fib(3))
= (fib(0)+fib(1))
Programarea calculatoarelor
= 1 +1
= 2 +(fib(1)+fib(2))
= 1 +(fib(0)+fib(1))
= 1 +1
= +2
= +3
= + 5
=8
fib(2)=fib(0)+fib(1)=1+1=2;
fib(3)=fib(1)+fib(2)=1+2=3;
fib(4)=fib(2)+fib(3)=2+3=5;
fib(5)=fib(3)+fib(4)=3+5=8.
Stiva programului:
-------- Adresa de revenire din functia
rev | adr1 | principala
--------
n | 3 |
--------
(a)
La noua reapelare a functiei fact, n=2 > 0, deci din nou se executa
alternativa else.
Stiva programului:
Stiva programului: