introalg:taller07_3
Diferencias
Muestra las diferencias entre dos versiones de la página.
Ambos lados, revisión anteriorRevisión previaPróxima revisión | Revisión previa | ||
introalg:taller07_3 [2007/04/20 21:13] – laura | introalg:taller07_3 [2018/08/10 03:03] (actual) – editor externo 127.0.0.1 | ||
---|---|---|---|
Línea 35: | Línea 35: | ||
factorial :: Int -> Int | factorial :: Int -> Int | ||
factorial 0 = 1 -- caso base | factorial 0 = 1 -- caso base | ||
- | factorial (n+1) = n * factorial | + | factorial (n+1) = (n+1) * factorial n -- caso inductivo |
</ | </ | ||
Línea 68: | Línea 68: | ||
< | < | ||
- | fib n = fib (n-1) + fib (n-2) | + | fib (n+2) = fib (n+1) + fib n |
</ | </ | ||
Línea 171: | Línea 171: | ||
Notar que en las funciones de tipo " | Notar que en las funciones de tipo " | ||
+ | |||
Línea 221: | Línea 222: | ||
[] | [] | ||
+ | ==== Múltiples casos base ==== | ||
- | ==== Con más de un caso base ==== | + | Recordemos que el número de casos base depende del problema concreto que estemos tratando. En la Sucesión de Fibonacci, encontramos dos casos base: fib 0 = 1 y fib 1 = 1. En la mayor parte de casos con listas tenemos un solo caso base, el de la lista vacía [], pero para algunos problemas podemos necesitar 2 o más casos base. Veamos por ejemplo la función // |
- | + | ||
- | Recordemos que el número de casos base depende del problema concreto que estemos tratando. En la Sucesión de Fibonacci, encontramos dos casos base: fib 0 = 1 y fib 1 = 1. En la mayor parte de casos con listas tenemos un solo caso base, el de la lista vacía [], pero para algunos problemas podemos necesitar 2 o más casos base. Veamos por ejemplo la función // | + | |
< | < | ||
- | emparejar :: [Int] -> [(Int,Int)] | + | emparejar :: [String] -> [(String,String)] |
emparejar (x:y:xs) = (x,y) : emparejar xs | emparejar (x:y:xs) = (x,y) : emparejar xs | ||
- | emparejar [x] = [(x,x)] | + | emparejar [x] = [(x,x)] |
- | emparejar [] = [] | + | emparejar [] |
</ | </ | ||
+ | |||
+ | Veamos cómo funciona. | ||
+ | |||
+ | Main> emparejar [" | ||
+ | [(" | ||
+ | |||
===== Ejercicios ===== | ===== Ejercicios ===== | ||
Línea 237: | Línea 243: | ||
=== Aplicar === | === Aplicar === | ||
- | * Definir la función // | + | * Definir la función // |
probar con [345, | probar con [345, | ||
- | * Generalizar la función // | + | * Generalizar la función // |
* Generalizar la función // | * Generalizar la función // | ||
Línea 270: | Línea 276: | ||
=== Miscelánea === | === Miscelánea === | ||
- | * Escribir la función que calcula la Sucesión de Fibonacci, //fib.n//, //fib : Int -> Int//, que se define así: //fib(n) = fib(n-1) + fib(n-2)//. | + | * Escribir la función que calcula la Sucesión de Fibonacci, //fib.n//, //fib : Int -> Int//, que se define así: //fib (n+2) = fib (n+1) + fib n//. |
probar con 4, 3, 2, 1 y 0. | probar con 4, 3, 2, 1 y 0. | ||
Línea 278: | Línea 284: | ||
probar con [(1,1)], [] y [(2, | probar con [(1,1)], [] y [(2, | ||
- | * Definir la función // | + | * Definir la función // |
probar con [0], [], [1], [0,0,0,0], [0,1,0,1], [1,2,3], [' | probar con [0], [], [1], [0,0,0,0], [0,1,0,1], [1,2,3], [' | ||
Línea 285: | Línea 291: | ||
probar con [], [0,0,0,0], [1,2,3,4], [0] y [1,5,7,0,9] | probar con [], [0,0,0,0], [1,2,3,4], [0] y [1,5,7,0,9] | ||
+ | |||
+ | * Definir la función // | ||
+ | |||
+ | probar con 8 y " | ||
* Definir la función // | * Definir la función // |
introalg/taller07_3.1177103584.txt.gz · Última modificación: 2018/08/10 03:03 (editor externo)