El fascinante triángulo de Pascal.
El triángulo de Pascal aparece en diversos contextos, ver:
https://en.wikipedia.org/wiki/Pascal%27s_triangle
Para ver que la construcción where no sólo es estética, calcular
take 25 (map pasTri [1..])
take 25 (map pasTri2 [1..])
de los programas de abajo y comparar la eficiencia de las versiones...
pasTri es en efecto exponencial,
y pasTri2 es lineal.
pasTri 1 = [1]
pasTri 2 = [1,1]
pasTri n | n>2 = zipWith (+) (pasTri (n-1)++[0]) ([0]++pasTri(n-1))
pasTri2 1 = [1]
pasTri2 2 = [1,1]
pasTri2 n | n>2 = zipWith (+) (ls++[0]) ([0]++ls)
where
ls = pasTri2 (n-1)
-- Observar que...
-- [1,1]
-- [1,1]
-- -------
-- [1,2,1]
-- [1,2,1]
-- ---------
-- [1,3,3,1]
-- [1,3,3,1]
-- ------------
-- [1,4,6,4,1]
Comentarios
Publicar un comentario