{"id":5088,"date":"2015-10-07T22:31:14","date_gmt":"2015-10-07T20:31:14","guid":{"rendered":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/?p=5088"},"modified":"2015-10-07T22:31:14","modified_gmt":"2015-10-07T20:31:14","slug":"i1m2015-definiciones-por-recursion-1","status":"publish","type":"post","link":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/i1m2015-definiciones-por-recursion-1\/","title":{"rendered":"I1M2015:  Definiciones por recursi\u00f3n (1)"},"content":{"rendered":"<p>En la segunda parte de la clase de hoy de <a href=\"http:\/\/www.cs.us.es\/~jalonso\/cursos\/i1m-15\">Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas<\/a> se ha empezado el estudio de las definiciones por recursi\u00f3n en Haskell. Concretamente, hemos visto ejemplos de<\/p>\n<ul>\n<li>recursi\u00f3n sobre los n\u00fameros naturales y<\/li>\n<li>recursi\u00f3n sobre listas,<\/li>\n<\/ul>\n<p>El c\u00f3digo correspondiente es<br \/>\n<!--more--><\/p>\n<pre lang=\"haskell\">\n-- ---------------------------------------------------------------------\n-- Recursi\u00f3n num\u00e9rica                                                 --\n-- ---------------------------------------------------------------------\n\n-- (factorial n) es el factorial de n. Por ejemplo,\n--    factorial 3  ==  6\nfactorial :: Integer -> Integer\nfactorial 0     = 1\nfactorial (n+1) = (n+1) * factorial n\n\n-- (m `por` n) es el producto de m por n. Por ejemplo,\n--    3 `por` 2  ==  6\npor :: Int -> Int -> Int\nm `por` 0       = 0\nm `por` (n + 1) = m + (m `por` n)\n\n-- ---------------------------------------------------------------------\n-- Recusi\u00f3n sobre lista                                               --\n-- ---------------------------------------------------------------------\n\n-- (producto xs) es el producto de los n\u00fameros de xs. Por ejemplo,\n--    producto [7,5,2] == 70\nproducto :: Num a => [a] -> a\nproducto []     = 1\nproducto (n:ns) = n * producto ns\n\n-- (longitud xs) es el n\u00famero de elementos de xs. Por ejemplo,\n--    longitud [2,4,5] == 3\nlongitud :: [a] -> Int\nlongitud []     = 0\nlongitud (_:xs) = 1 + longitud xs\n\n-- (inversa xs) es la inversa de xs. Por ejemplo,\n--    inversa [2,5,3]  ==  [3,5,2]  \ninversa :: [a] -> [a]\ninversa []     = []\ninversa (x:xs) = inversa xs ++ [x]\n\n<\/pre>\n<p>Las transparencias usadas en la clase son las primeras 9 p\u00e1ginas del tema 6<\/p>\n<p><iframe loading=\"lazy\" src=\"\/\/www.slideshare.net\/slideshow\/embed_code\/key\/Lqv9n27vvsLA3F\" width=\"425\" height=\"355\" frameborder=\"0\" marginwidth=\"0\" marginheight=\"0\" scrolling=\"no\" style=\"border:1px solid #CCC; border-width:1px; margin-bottom:5px; max-width: 100%;\" allowfullscreen> <\/iframe><\/p>\n<div style=\"margin-bottom:5px\"> <\/div>\n","protected":false},"excerpt":{"rendered":"<p>En la segunda parte de la clase de hoy de Inform\u00e1tica de 1\u00ba del Grado en Matem\u00e1ticas se ha empezado 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, El c\u00f3digo correspondiente es<\/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":[250],"tags":[270,310],"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\/5088"}],"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=5088"}],"version-history":[{"count":1,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5088\/revisions"}],"predecessor-version":[{"id":5089,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/posts\/5088\/revisions\/5089"}],"wp:attachment":[{"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/media?parent=5088"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/categories?post=5088"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.glc.us.es\/~jalonso\/vestigium\/wp-json\/wp\/v2\/tags?post=5088"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}