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.

358 Capítulo 17. Estructuras de datos recursivas<br />

c2 = a2 + xc1<br />

c3 = a3 + xc2<br />

. =<br />

cn−1 = an−1 + xcn−2<br />

cn = an + xcn−1<br />

Claram<strong>en</strong>te se observa que bn = P (x) y, <strong>en</strong> consecu<strong>en</strong>cia, ya podemos escribir<br />

su expresión recursiva.<br />

Horner(x,lCoef) =<br />

lCoef^.cont<strong>en</strong>ido + x * Horner(x,lCoef^.sigui<strong>en</strong>te)<br />

El caso base se da cuando la lista de coefici<strong>en</strong>tes se queda vacía (nil). Un s<strong>en</strong>cillo<br />

ejemplo nos muestra que, <strong>en</strong> este caso, la función debe valer cero.<br />

Supongamos que queremos evaluar un polinomio constante P (x) = K, <strong>en</strong>tonces<br />

su lista de coefici<strong>en</strong>tes es [K], usando la expresión recursiva anterior t<strong>en</strong>dríamos<br />

que<br />

Horner(x,nil) = 0<br />

Horner(x,[K]) = K + x * Horner(x,nil)<br />

Una vez conocidos el caso base y la expresión recursiva definiremos una<br />

función Horner2 con dos variables: el punto donde evaluar y una lista de reales<br />

que repres<strong>en</strong>tan los coefici<strong>en</strong>tes del polinomio ord<strong>en</strong>ados de mayor a m<strong>en</strong>or<br />

grado.<br />

function Horner2(x: real; lCoef: tLista): real;<br />

{Dev. P(x), si<strong>en</strong>do P el polinomio de coefici<strong>en</strong>tes lCoef}<br />

begin<br />

if lCoef = nil th<strong>en</strong><br />

Horner2:= 0<br />

else<br />

Horner2:= lCoef^.cont<strong>en</strong>ido + x * Horner2(x,lCoef^.sigui<strong>en</strong>te)<br />

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

17.1.5 Otras operaciones sobre listas<br />

A continuación se <strong>en</strong>umeran algunas de las operaciones que más frecu<strong>en</strong>tem<strong>en</strong>te<br />

se utilizan al trabajar con listas:<br />

1. Determinar el número de elem<strong>en</strong>tos de una lista.<br />

.

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

Saved successfully!

Ooh no, something went wrong!