A gentle introduction to mutual recursion

Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, i...

Ausführliche Beschreibung

Gespeichert in:
Bibliographische Detailangaben
Veröffentlicht in:SIGCSE bulletin 2008-08, Vol.40 (3), p.235-239
Hauptverfasser: Rubio-Sánchez, Manuel, Urquiza-Fuentes, Jaime, Pareja-Flores, Cristóbal
Format: Artikel
Sprache:eng
Online-Zugang:Volltext
Tags: Tag hinzufügen
Keine Tags, Fügen Sie den ersten Tag hinzu!
container_end_page 239
container_issue 3
container_start_page 235
container_title SIGCSE bulletin
container_volume 40
creator Rubio-Sánchez, Manuel
Urquiza-Fuentes, Jaime
Pareja-Flores, Cristóbal
description Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, it is generally addressed superficially in CS1/2 programming courses and textbooks. We show that, when a problem is approached appropriately, not only can mutual recursion be a powerful tool, but it can also be easy to understand and fun. This paper provides several intuitive and attractive algorithms that rely on mutual recursion, and which have been designed to help strengthen students' ability to decompose problems and apply induction. Furthermore, we show that a solution based on mutual recursion may be easier to design, prove and comprehend than other solutions based on direct recursion. We have evaluated the use of these algorithms while teaching recursion concepts. Results suggest that mutual recursion, in comparison with other types of recursion, is not as hard as it seems when: (1) determining the result of a (mathematical) function call, and, most importantly, (2) designing algorithms for solving simple problems.
doi_str_mv 10.1145/1597849.1384334
format Article
fullrecord <record><control><sourceid>crossref</sourceid><recordid>TN_cdi_crossref_primary_10_1145_1597849_1384334</recordid><sourceformat>XML</sourceformat><sourcesystem>PC</sourcesystem><sourcerecordid>10_1145_1597849_1384334</sourcerecordid><originalsourceid>FETCH-crossref_primary_10_1145_1597849_13843343</originalsourceid><addsrcrecordid>eNpjYBA3NNAzNDQx1Tc0tTS3MLHUMzS2MDE2NmFh4DQwsDTXtTAxtOBg4CouzjIwMDI3MzPhZNB0VEhPzSvJSVXIzCspyk8pTS7JzM9TKMlXyC0tKU3MUShKTS4tKgaK8TCwpiXmFKfyQmluBn031xBnD93kovzi4qLUtPiCoszcxKLKeEODeJAr4qGuiIe6wph0HQDmeDpW</addsrcrecordid><sourcetype>Aggregation Database</sourcetype><iscdi>true</iscdi><recordtype>article</recordtype></control><display><type>article</type><title>A gentle introduction to mutual recursion</title><source>ACM Digital Library</source><creator>Rubio-Sánchez, Manuel ; Urquiza-Fuentes, Jaime ; Pareja-Flores, Cristóbal</creator><creatorcontrib>Rubio-Sánchez, Manuel ; Urquiza-Fuentes, Jaime ; Pareja-Flores, Cristóbal</creatorcontrib><description>Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, it is generally addressed superficially in CS1/2 programming courses and textbooks. We show that, when a problem is approached appropriately, not only can mutual recursion be a powerful tool, but it can also be easy to understand and fun. This paper provides several intuitive and attractive algorithms that rely on mutual recursion, and which have been designed to help strengthen students' ability to decompose problems and apply induction. Furthermore, we show that a solution based on mutual recursion may be easier to design, prove and comprehend than other solutions based on direct recursion. We have evaluated the use of these algorithms while teaching recursion concepts. Results suggest that mutual recursion, in comparison with other types of recursion, is not as hard as it seems when: (1) determining the result of a (mathematical) function call, and, most importantly, (2) designing algorithms for solving simple problems.</description><identifier>ISSN: 0097-8418</identifier><identifier>DOI: 10.1145/1597849.1384334</identifier><language>eng</language><ispartof>SIGCSE bulletin, 2008-08, Vol.40 (3), p.235-239</ispartof><woscitedreferencessubscribed>false</woscitedreferencessubscribed><cites>FETCH-crossref_primary_10_1145_1597849_13843343</cites></display><links><openurl>$$Topenurl_article</openurl><openurlfulltext>$$Topenurlfull_article</openurlfulltext><thumbnail>$$Tsyndetics_thumb_exl</thumbnail><link.rule.ids>314,776,780,27901,27902</link.rule.ids></links><search><creatorcontrib>Rubio-Sánchez, Manuel</creatorcontrib><creatorcontrib>Urquiza-Fuentes, Jaime</creatorcontrib><creatorcontrib>Pareja-Flores, Cristóbal</creatorcontrib><title>A gentle introduction to mutual recursion</title><title>SIGCSE bulletin</title><description>Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, it is generally addressed superficially in CS1/2 programming courses and textbooks. We show that, when a problem is approached appropriately, not only can mutual recursion be a powerful tool, but it can also be easy to understand and fun. This paper provides several intuitive and attractive algorithms that rely on mutual recursion, and which have been designed to help strengthen students' ability to decompose problems and apply induction. Furthermore, we show that a solution based on mutual recursion may be easier to design, prove and comprehend than other solutions based on direct recursion. We have evaluated the use of these algorithms while teaching recursion concepts. Results suggest that mutual recursion, in comparison with other types of recursion, is not as hard as it seems when: (1) determining the result of a (mathematical) function call, and, most importantly, (2) designing algorithms for solving simple problems.</description><issn>0097-8418</issn><fulltext>true</fulltext><rsrctype>article</rsrctype><creationdate>2008</creationdate><recordtype>article</recordtype><recordid>eNpjYBA3NNAzNDQx1Tc0tTS3MLHUMzS2MDE2NmFh4DQwsDTXtTAxtOBg4CouzjIwMDI3MzPhZNB0VEhPzSvJSVXIzCspyk8pTS7JzM9TKMlXyC0tKU3MUShKTS4tKgaK8TCwpiXmFKfyQmluBn031xBnD93kovzi4qLUtPiCoszcxKLKeEODeJAr4qGuiIe6wph0HQDmeDpW</recordid><startdate>20080825</startdate><enddate>20080825</enddate><creator>Rubio-Sánchez, Manuel</creator><creator>Urquiza-Fuentes, Jaime</creator><creator>Pareja-Flores, Cristóbal</creator><scope>AAYXX</scope><scope>CITATION</scope></search><sort><creationdate>20080825</creationdate><title>A gentle introduction to mutual recursion</title><author>Rubio-Sánchez, Manuel ; Urquiza-Fuentes, Jaime ; Pareja-Flores, Cristóbal</author></sort><facets><frbrtype>5</frbrtype><frbrgroupid>cdi_FETCH-crossref_primary_10_1145_1597849_13843343</frbrgroupid><rsrctype>articles</rsrctype><prefilter>articles</prefilter><language>eng</language><creationdate>2008</creationdate><toplevel>online_resources</toplevel><creatorcontrib>Rubio-Sánchez, Manuel</creatorcontrib><creatorcontrib>Urquiza-Fuentes, Jaime</creatorcontrib><creatorcontrib>Pareja-Flores, Cristóbal</creatorcontrib><collection>CrossRef</collection><jtitle>SIGCSE bulletin</jtitle></facets><delivery><delcategory>Remote Search Resource</delcategory><fulltext>fulltext</fulltext></delivery><addata><au>Rubio-Sánchez, Manuel</au><au>Urquiza-Fuentes, Jaime</au><au>Pareja-Flores, Cristóbal</au><format>journal</format><genre>article</genre><ristype>JOUR</ristype><atitle>A gentle introduction to mutual recursion</atitle><jtitle>SIGCSE bulletin</jtitle><date>2008-08-25</date><risdate>2008</risdate><volume>40</volume><issue>3</issue><spage>235</spage><epage>239</epage><pages>235-239</pages><issn>0097-8418</issn><abstract>Recursion is an important topic in computer science curricula. It is related to the acquisition of competences regarding problem decomposition, functional abstraction and the concept of induction. In comparison with direct recursion, mutual recursion is considered to be more complex. Consequently, it is generally addressed superficially in CS1/2 programming courses and textbooks. We show that, when a problem is approached appropriately, not only can mutual recursion be a powerful tool, but it can also be easy to understand and fun. This paper provides several intuitive and attractive algorithms that rely on mutual recursion, and which have been designed to help strengthen students' ability to decompose problems and apply induction. Furthermore, we show that a solution based on mutual recursion may be easier to design, prove and comprehend than other solutions based on direct recursion. We have evaluated the use of these algorithms while teaching recursion concepts. Results suggest that mutual recursion, in comparison with other types of recursion, is not as hard as it seems when: (1) determining the result of a (mathematical) function call, and, most importantly, (2) designing algorithms for solving simple problems.</abstract><doi>10.1145/1597849.1384334</doi></addata></record>
fulltext fulltext
identifier ISSN: 0097-8418
ispartof SIGCSE bulletin, 2008-08, Vol.40 (3), p.235-239
issn 0097-8418
language eng
recordid cdi_crossref_primary_10_1145_1597849_1384334
source ACM Digital Library
title A gentle introduction to mutual recursion
url https://sfx.bib-bvb.de/sfx_tum?ctx_ver=Z39.88-2004&ctx_enc=info:ofi/enc:UTF-8&ctx_tim=2025-02-01T12%3A25%3A11IST&url_ver=Z39.88-2004&url_ctx_fmt=infofi/fmt:kev:mtx:ctx&rfr_id=info:sid/primo.exlibrisgroup.com:primo3-Article-crossref&rft_val_fmt=info:ofi/fmt:kev:mtx:journal&rft.genre=article&rft.atitle=A%20gentle%20introduction%20to%20mutual%20recursion&rft.jtitle=SIGCSE%20bulletin&rft.au=Rubio-S%C3%A1nchez,%20Manuel&rft.date=2008-08-25&rft.volume=40&rft.issue=3&rft.spage=235&rft.epage=239&rft.pages=235-239&rft.issn=0097-8418&rft_id=info:doi/10.1145/1597849.1384334&rft_dat=%3Ccrossref%3E10_1145_1597849_1384334%3C/crossref%3E%3Curl%3E%3C/url%3E&disable_directlink=true&sfx.directlink=off&sfx.report_link=0&rft_id=info:oai/&rft_id=info:pmid/&rfr_iscdi=true