{"id":3812,"date":"2013-11-12T17:16:37","date_gmt":"2013-11-12T16:16:37","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=3812"},"modified":"2013-11-13T07:21:02","modified_gmt":"2013-11-13T06:21:02","slug":"i1m2013-definiciones-por-recursion-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2013-definiciones-por-recursion-1\/","title":{"rendered":"I1M2013:  Definiciones por recursi\u00f3n (1)"},"content":{"rendered":"<p>En la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-13\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> hemos iniciado el estudio de las definiciones por recursi\u00f3n en Haskell. Concretamente, hemos visto ejemplos de recursi\u00f3n sobre los n\u00fameros naturales y recursi\u00f3n sobre listas.<\/p>\n<p>\nLas transparencias usadas en la clase son las las p\u00e1ginas 1 a 10 del <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-13\/temas\/tema-6t.pdf\">tema 6<\/a>:<br \/>\n<!--more--><br \/>\n<div class=\"jetpack-video-wrapper\"><iframe src='https:\/\/www.slideshare.net\/slideshow\/embed_code\/5667945' width='1290' height='1057' sandbox=\"allow-popups allow-scripts allow-same-origin allow-presentation\" allowfullscreen webkitallowfullscreen mozallowfullscreen><\/iframe><\/div><\/p>\n<p>El c\u00f3digo correspondiente es<\/p>\n<pre lang=\"haskell\">\r\n-- ---------------------------------------------------------------------\r\n-- Recursi\u00f3n num\u00e9rica                                                 --\r\n-- ---------------------------------------------------------------------\r\n\r\n-- (factorial n) es el factorial de n. Por ejemplo,\r\n--    factorial 3  ==  6\r\nfactorial :: Integer -> Integer\r\nfactorial 0     = 1\r\nfactorial (n+1) = (n+1) * factorial n\r\n\r\n-- (m `por` n) es el producto de m por n. Por ejemplo,\r\n--    3 `por` 2  ==  6\r\npor :: Int -> Int -> Int\r\nm `por` 0       = 0\r\nm `por` (n + 1) = m + (m `por` n)\r\n\r\n-- ---------------------------------------------------------------------\r\n-- Recusi\u00f3n sobre lista                                               --\r\n-- ---------------------------------------------------------------------\r\n\r\n-- (producto xs) es el producto de los n\u00fameros de xs. Por ejemplo,\r\n--    producto [7,5,2] == 70\r\nproducto :: Num a => [a] -> a\r\nproducto []     = 1\r\nproducto (n:ns) = n * producto ns\r\n\r\n-- (longitud xs) es el n\u00famero de elementos de xs. Por ejemplo,\r\n--    longitud [2,4,5] == 3\r\nlongitud :: [a] -> Int\r\nlongitud []     = 0\r\nlongitud (_:xs) = 1 + longitud xs\r\n\r\n-- (inversa xs) es la inversa de xs. Por ejemplo,\r\n--    inversa [2,5,3]  ==  [3,5,2]  \r\ninversa :: [a] -> [a]\r\ninversa []     = []\r\ninversa (x:xs) = inversa xs ++ [x]\r\n\r\n-- (conc xs ys) es la concatenaci\u00f3n de xs e ys. Por ejemplo,\r\n--    conc [2,5] [3,5,6]  ==  [2,5,3,5,6]\r\nconc :: [a] -> [a] -> [a]\r\nconc []     ys = ys\r\nconc (x:xs) ys = x : conc xs ys\r\n\r\n-- (inserta e xs) inserta el elemento e en la lista xs delante del\r\n-- primer elemento de xs mayor o igual que e. Por ejemplo,\r\n--    inserta 5 [2,4,7,3,6,8,10] == [2,4,5,7,3,6,8,10]  \r\ninserta :: Ord a => a -> [a] -> [a]\r\ninserta e []                  = [e]\r\ninserta e (x:xs) | e <= x     = e : (x:xs) \r\n                 | otherwise  = x : inserta e xs    \r\n\r\n-- (ordena_por_insercion xs) es la lista xs ordenada mediante inserci\u00f3n,\r\n-- Por ejemplo, \r\n--    ordena_por_insercion [2,4,3,6,3] == [2,3,3,4,6]  \r\nordena_por_insercion :: Ord a => [a] -> [a]\r\nordena_por_insercion []     = []\r\nordena_por_insercion (x:xs) = \r\n    inserta x (ordena_por_insercion xs)   \r\n<\/pre>\n<p>\nComo tarea se ha propuesto escribir de manera colaborativa las soluciones de los ejercicios de la <a href=\"https:\/\/www.glc.us.es\/~jalonso\/ejerciciosI1M2013G3\/index.php5\/Relaci\u00f3n_7\">7\u00aa relaci\u00f3n<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>En la clase de hoy de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas hemos iniciado el estudio de las definiciones por recursi\u00f3n en Haskell. Concretamente, hemos visto ejemplos de recursi\u00f3n sobre los n\u00fameros naturales y recursi\u00f3n sobre listas. Las transparencias usadas en la clase son las las p\u00e1ginas 1 a 10 del tema 6:<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"footnotes":"","_jetpack_memberships_contains_paid_content":false},"categories":[222],"tags":[270,300],"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"jetpack_likes_enabled":false,"_links":{"self":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3812"}],"collection":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/comments?post=3812"}],"version-history":[{"count":2,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3812\/revisions"}],"predecessor-version":[{"id":3814,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/3812\/revisions\/3814"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=3812"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=3812"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=3812"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}