09.05.2013 Views

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

Algoritmos y Programación en Pascal

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

212 Capítulo 10. Introducción a la recursión<br />

10.1 Un ejemplo de refer<strong>en</strong>cia<br />

Consideremos el cálculo del factorial de un <strong>en</strong>tero positivo n que se define de<br />

la sigui<strong>en</strong>te forma:<br />

Como, a su vez,<br />

n! = n ∗ (n − 1) ∗ (n − 2) ∗ ... ∗ 1<br />

(n − 1)! = (n − 1) ∗ (n − 2)... ∗ 1<br />

t<strong>en</strong>emos que n! se puede definir <strong>en</strong> términos de (n − 1)!, para n > 0, así:<br />

n! = n ∗ (n − 1)!<br />

si<strong>en</strong>do por definición 0! = 1, lo que permite terminar correctam<strong>en</strong>te los cálculos.<br />

Por ejemplo, al calcular el factorial de 3:<br />

3! = 3 ∗ 2! = 3 ∗ 2 ∗ 1! = 3 ∗ 2 ∗ 1 ∗ 0! = 3 ∗ 2 ∗ 1 ∗ 1 = 6<br />

Por lo tanto, si n es distinto de cero t<strong>en</strong>dremos que calcular el factorial de<br />

n − 1, y si es cero el factorial es directam<strong>en</strong>te 1:<br />

⎧<br />

⎨ 1 si n = 0<br />

n! =<br />

⎩<br />

n ∗ (n − 1)! si n ≥ 1<br />

Observamos <strong>en</strong> este ejemplo que <strong>en</strong> la definición de factorial intervi<strong>en</strong>e el<br />

propio factorial. Este tipo de definiciones <strong>en</strong> las que intervi<strong>en</strong>e lo definido se<br />

llaman recursivas.<br />

La definición anterior se escribe <strong>en</strong> <strong>Pascal</strong> directam<strong>en</strong>te como sigue: 1<br />

function Fac(num: integer): integer;<br />

{PreC.: num ≥ 0}<br />

{Dev. num!}<br />

begin<br />

if num = 0 th<strong>en</strong><br />

Fac:= 1<br />

else<br />

Fac:= num * Fac(num - 1)<br />

<strong>en</strong>d; {Fac}<br />

1 En estos primeros ejemplos obviaremos algunos detalles de corrección que serán explicados<br />

más adelante.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!