CINXE.COM

Recursividade (ciência da computação) – Wikipédia, a enciclopédia livre

<!DOCTYPE html> <html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available" lang="pt" dir="ltr"> <head> <meta charset="UTF-8"> <title>Recursividade (ciência da computação) – Wikipédia, a enciclopédia livre</title> <script>(function(){var className="client-js vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-sticky-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-feature-night-mode-enabled skin-theme-clientpref-day vector-toc-available";var cookie=document.cookie.match(/(?:^|; )ptwikimwclientpreferences=([^;]+)/);if(cookie){cookie[1].split('%2C').forEach(function(pref){className=className.replace(new RegExp('(^| )'+pref.replace(/-clientpref-\w+$|[^\w-]+/g,'')+'-clientpref-\\w+( |$)'),'$1'+pref+'$2');});}document.documentElement.className=className;}());RLCONF={"wgBreakFrames":false,"wgSeparatorTransformTable":[",\t."," \t,"],"wgDigitTransformTable":["",""], "wgDefaultDateFormat":"dmy","wgMonthNames":["","janeiro","fevereiro","março","abril","maio","junho","julho","agosto","setembro","outubro","novembro","dezembro"],"wgRequestId":"d0d447c8-8a0d-465c-87c0-fdc220baf3da","wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"Recursividade_(ciência_da_computação)","wgTitle":"Recursividade (ciência da computação)","wgCurRevisionId":60539811,"wgRevisionId":60539811,"wgArticleId":730489,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["!Artigos que carecem de fontes desde outubro de 2016","!Artigos que carecem de fontes sem indicação de tema","Estruturas de controle","Lógica"],"wgPageViewLanguage":"pt","wgPageContentLanguage":"pt","wgPageContentModel":"wikitext","wgRelevantPageName":"Recursividade_(ciência_da_computação)","wgRelevantArticleId":730489,"wgIsProbablyEditable":true,"wgRelevantPageIsProbablyEditable":true, "wgRestrictionEdit":[],"wgRestrictionMove":[],"wgNoticeProject":"wikipedia","wgCiteReferencePreviewsActive":false,"wgMediaViewerOnClick":true,"wgMediaViewerEnabledByDefault":true,"wgPopupsFlags":0,"wgVisualEditor":{"pageLanguageCode":"pt","pageLanguageDir":"ltr","pageVariantFallbacks":"pt"},"wgMFDisplayWikibaseDescriptions":{"search":true,"watchlist":true,"tagline":true,"nearby":true},"wgWMESchemaEditAttemptStepOversample":false,"wgWMEPageLength":10000,"wgRelatedArticlesCompat":[],"wgEditSubmitButtonLabelPublish":true,"wgULSPosition":"interlanguage","wgULSisCompactLinksEnabled":false,"wgVector2022LanguageInHeader":true,"wgULSisLanguageSelectorEmpty":false,"wgWikibaseItemId":"Q264164","wgCheckUserClientHintsHeadersJsApi":["brands","architecture","bitness","fullVersionList","mobile","model","platform","platformVersion"],"GEHomepageSuggestedEditsEnableTopics":true,"wgGETopicsMatchModeEnabled":true,"wgGEStructuredTaskRejectionReasonTextInputEnabled":false,"wgGELevelingUpEnabledForUser": false,"wgSiteNoticeId":"2.30"};RLSTATE={"ext.gadget.FeedbackHighlight-base":"ready","ext.gadget.keepPDU":"ready","ext.globalCssJs.user.styles":"ready","site.styles":"ready","user.styles":"ready","ext.globalCssJs.user":"ready","user":"ready","user.options":"loading","ext.math.styles":"ready","ext.pygments":"ready","skins.vector.search.codex.styles":"ready","skins.vector.styles":"ready","skins.vector.icons":"ready","ext.wikimediamessages.styles":"ready","ext.visualEditor.desktopArticleTarget.noscript":"ready","ext.uls.interlanguage":"ready","wikibase.client.init":"ready","ext.wikimediaBadges":"ready","ext.dismissableSiteNotice.styles":"ready"};RLPAGEMODULES=["ext.pygments.view","site","mediawiki.page.ready","mediawiki.toc","skins.vector.js","ext.centralNotice.geoIP","ext.centralNotice.startUp","ext.gadget.Topicon","ext.gadget.Metacaixa","ext.gadget.TitleRewrite","ext.gadget.ElementosOcultaveis","ext.gadget.FeedbackHighlight","ext.gadget.ReferenceTooltips","ext.gadget.NewVillagePump", "ext.gadget.wikibugs","ext.gadget.charinsert","ext.gadget.requestForAdminship","ext.gadget.WikiMiniAtlas","ext.gadget.PagesForDeletion","ext.urlShortener.toolbar","ext.centralauth.centralautologin","mmv.bootstrap","ext.popups","ext.visualEditor.desktopArticleTarget.init","ext.visualEditor.targetLoader","ext.echo.centralauth","ext.eventLogging","ext.wikimediaEvents","ext.navigationTiming","ext.uls.interface","ext.cx.eventlogging.campaigns","ext.cx.uls.quick.actions","wikibase.client.vector-2022","ext.checkUser.clientHints","ext.quicksurveys.init","ext.growthExperiments.SuggestedEditSession","oojs-ui.styles.icons-media","oojs-ui-core.icons","wikibase.sidebar.tracking","ext.dismissableSiteNotice"];</script> <script>(RLQ=window.RLQ||[]).push(function(){mw.loader.impl(function(){return["user.options@12s5i",function($,jQuery,require,module){mw.user.tokens.set({"patrolToken":"+\\","watchToken":"+\\","csrfToken":"+\\"}); }];});});</script> <link rel="stylesheet" href="/w/load.php?lang=pt&amp;modules=ext.dismissableSiteNotice.styles%7Cext.math.styles%7Cext.pygments%2CwikimediaBadges%7Cext.uls.interlanguage%7Cext.visualEditor.desktopArticleTarget.noscript%7Cext.wikimediamessages.styles%7Cskins.vector.icons%2Cstyles%7Cskins.vector.search.codex.styles%7Cwikibase.client.init&amp;only=styles&amp;skin=vector-2022"> <script async="" src="/w/load.php?lang=pt&amp;modules=startup&amp;only=scripts&amp;raw=1&amp;skin=vector-2022"></script> <meta name="ResourceLoaderDynamicStyles" content=""> <link rel="stylesheet" href="/w/load.php?lang=pt&amp;modules=ext.gadget.FeedbackHighlight-base%2CkeepPDU&amp;only=styles&amp;skin=vector-2022"> <link rel="stylesheet" href="/w/load.php?lang=pt&amp;modules=site.styles&amp;only=styles&amp;skin=vector-2022"> <meta name="generator" content="MediaWiki 1.44.0-wmf.5"> <meta name="referrer" content="origin"> <meta name="referrer" content="origin-when-cross-origin"> <meta name="robots" content="max-image-preview:standard"> <meta name="format-detection" content="telephone=no"> <meta name="viewport" content="width=1120"> <meta property="og:title" content="Recursividade (ciência da computação) – Wikipédia, a enciclopédia livre"> <meta property="og:type" content="website"> <link rel="preconnect" href="//upload.wikimedia.org"> <link rel="alternate" media="only screen and (max-width: 640px)" href="//pt.m.wikipedia.org/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)"> <link rel="alternate" type="application/x-wiki" title="Editar" href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit"> <link rel="apple-touch-icon" href="/static/apple-touch/wikipedia.png"> <link rel="icon" href="/static/favicon/wikipedia.ico"> <link rel="search" type="application/opensearchdescription+xml" href="/w/rest.php/v1/search" title="Wikipédia (pt)"> <link rel="EditURI" type="application/rsd+xml" href="//pt.wikipedia.org/w/api.php?action=rsd"> <link rel="canonical" href="https://pt.wikipedia.org/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)"> <link rel="license" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pt"> <link rel="alternate" type="application/atom+xml" title="&#039;&#039;Feed&#039;&#039; Atom Wikipédia" href="/w/index.php?title=Especial:Mudan%C3%A7as_recentes&amp;feed=atom"> <link rel="dns-prefetch" href="//meta.wikimedia.org" /> <link rel="dns-prefetch" href="//login.wikimedia.org"> </head> <body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject mw-editable page-Recursividade_ciência_da_computação rootpage-Recursividade_ciência_da_computação skin-vector-2022 action-view"><a class="mw-jump-link" href="#bodyContent">Saltar para o conteúdo</a> <div class="vector-header-container"> <header class="vector-header mw-header"> <div class="vector-header-start"> <nav class="vector-main-menu-landmark" aria-label="&#039;&#039;Site&#039;&#039;"> <div id="vector-main-menu-dropdown" class="vector-dropdown vector-main-menu-dropdown vector-button-flush-left vector-button-flush-right" > <input type="checkbox" id="vector-main-menu-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-main-menu-dropdown" class="vector-dropdown-checkbox " aria-label="Menu principal" > <label id="vector-main-menu-dropdown-label" for="vector-main-menu-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-menu mw-ui-icon-wikimedia-menu"></span> <span class="vector-dropdown-label-text">Menu principal</span> </label> <div class="vector-dropdown-content"> <div id="vector-main-menu-unpinned-container" class="vector-unpinned-container"> <div id="vector-main-menu" class="vector-main-menu vector-pinnable-element"> <div class="vector-pinnable-header vector-main-menu-pinnable-header vector-pinnable-header-unpinned" data-feature-name="main-menu-pinned" data-pinnable-element-id="vector-main-menu" data-pinned-container-id="vector-main-menu-pinned-container" data-unpinned-container-id="vector-main-menu-unpinned-container" > <div class="vector-pinnable-header-label">Menu principal</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-main-menu.pin">mover para a barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-main-menu.unpin">ocultar</button> </div> <div id="p-navigation" class="vector-menu mw-portlet mw-portlet-navigation" > <div class="vector-menu-heading"> Navegação </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-mainpage-description" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:P%C3%A1gina_principal" title="Visitar a página principal [z]" accesskey="z"><span>Página principal</span></a></li><li id="n-featuredcontent" class="mw-list-item"><a href="/wiki/Portal:Conte%C3%BAdo_destacado"><span>Conteúdo destacado</span></a></li><li id="n-currentevents" class="mw-list-item"><a href="/wiki/Portal:Eventos_atuais" title="Informação temática sobre eventos atuais"><span>Eventos atuais</span></a></li><li id="n-villagepump" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Esplanada"><span>Esplanada</span></a></li><li id="n-randompage" class="mw-list-item"><a href="/wiki/Especial:Aleat%C3%B3ria" title="Carregar página aleatória [x]" accesskey="x"><span>Página aleatória</span></a></li><li id="n-portals" class="mw-list-item"><a href="/wiki/Portal:%C3%8Dndice"><span>Portais</span></a></li><li id="n-bug_in_article" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Informe_um_erro"><span>Informar um erro</span></a></li> </ul> </div> </div> <div id="p-interaction" class="vector-menu mw-portlet mw-portlet-interaction" > <div class="vector-menu-heading"> Colaboração </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="n-welcome" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Boas-vindas"><span>Boas-vindas</span></a></li><li id="n-help" class="mw-list-item"><a href="/wiki/Ajuda:P%C3%A1gina_principal" title="Um local reservado para auxílio."><span>Ajuda</span></a></li><li id="n-Páginas-de-testes-públicas" class="mw-list-item"><a href="/wiki/Ajuda:P%C3%A1gina_de_testes"><span>Páginas de testes públicas</span></a></li><li id="n-portal" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Portal_comunit%C3%A1rio" title="Sobre o projeto"><span>Portal comunitário</span></a></li><li id="n-recentchanges" class="mw-list-item"><a href="/wiki/Especial:Mudan%C3%A7as_recentes" title="Uma lista de mudanças recentes nesta wiki [r]" accesskey="r"><span>Mudanças recentes</span></a></li><li id="n-maintenance" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Manuten%C3%A7%C3%A3o"><span>Manutenção</span></a></li><li id="n-createpage" class="mw-list-item"><a href="/wiki/Ajuda:Guia_de_edi%C3%A7%C3%A3o/Como_come%C3%A7ar_uma_p%C3%A1gina"><span>Criar página</span></a></li><li id="n-newpages-description" class="mw-list-item"><a href="/wiki/Especial:P%C3%A1ginas_novas"><span>Páginas novas</span></a></li><li id="n-contact-description" class="mw-list-item"><a href="/wiki/Wikip%C3%A9dia:Contato"><span>Contato</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> <a href="/wiki/Wikip%C3%A9dia:P%C3%A1gina_principal" class="mw-logo"> <img class="mw-logo-icon" src="/static/images/icons/wikipedia.png" alt="" aria-hidden="true" height="50" width="50"> <span class="mw-logo-container skin-invert"> <img class="mw-logo-wordmark" alt="Wikipédia" src="/static/images/mobile/copyright/wikipedia-wordmark-fr.svg" style="width: 7.4375em; height: 1.125em;"> <img class="mw-logo-tagline" alt="" src="/static/images/mobile/copyright/wikipedia-tagline-pt.svg" width="120" height="13" style="width: 7.5em; height: 0.8125em;"> </span> </a> </div> <div class="vector-header-end"> <div id="p-search" role="search" class="vector-search-box-vue vector-search-box-collapses vector-search-box-show-thumbnail vector-search-box-auto-expand-width vector-search-box"> <a href="/wiki/Especial:Pesquisar" class="cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only search-toggle" title="Pesquisar na Wikipédia [f]" accesskey="f"><span class="vector-icon mw-ui-icon-search mw-ui-icon-wikimedia-search"></span> <span>Busca</span> </a> <div class="vector-typeahead-search-container"> <div class="cdx-typeahead-search cdx-typeahead-search--show-thumbnail cdx-typeahead-search--auto-expand-width"> <form action="/w/index.php" id="searchform" class="cdx-search-input cdx-search-input--has-end-button"> <div id="simpleSearch" class="cdx-search-input__input-wrapper" data-search-loc="header-moved"> <div class="cdx-text-input cdx-text-input--has-start-icon"> <input class="cdx-text-input__input" type="search" name="search" placeholder="Pesquisar na Wikipédia" aria-label="Pesquisar na Wikipédia" autocapitalize="sentences" title="Pesquisar na Wikipédia [f]" accesskey="f" id="searchInput" > <span class="cdx-text-input__icon cdx-text-input__start-icon"></span> </div> <input type="hidden" name="title" value="Especial:Pesquisar"> </div> <button class="cdx-button cdx-search-input__end-button">Pesquisar</button> </form> </div> </div> </div> <nav class="vector-user-links vector-user-links-wide" aria-label="Ferramentas pessoais"> <div class="vector-user-links-main"> <div id="p-vector-user-menu-preferences" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-userpage" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <nav class="vector-appearance-landmark" aria-label="Aspeto"> <div id="vector-appearance-dropdown" class="vector-dropdown " title="Change the appearance of the page&#039;s font size, width, and color" > <input type="checkbox" id="vector-appearance-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-appearance-dropdown" class="vector-dropdown-checkbox " aria-label="Aspeto" > <label id="vector-appearance-dropdown-label" for="vector-appearance-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-appearance mw-ui-icon-wikimedia-appearance"></span> <span class="vector-dropdown-label-text">Aspeto</span> </label> <div class="vector-dropdown-content"> <div id="vector-appearance-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <div id="p-vector-user-menu-notifications" class="vector-menu mw-portlet emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> <div id="p-vector-user-menu-overflow" class="vector-menu mw-portlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=20120521SB001&amp;uselang=pt" class=""><span>Donativos</span></a> </li> <li id="pt-createaccount-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Especial:Criar_conta&amp;returnto=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29" title="É encorajado a criar uma conta e iniciar sessão; no entanto, não é obrigatório" class=""><span>Criar uma conta</span></a> </li> <li id="pt-login-2" class="user-links-collapsible-item mw-list-item user-links-collapsible-item"><a data-mw="interface" href="/w/index.php?title=Especial:Entrar&amp;returnto=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29" title="Aconselhamos-lhe a criar uma conta na Wikipédia, embora tal não seja obrigatório. [o]" accesskey="o" class=""><span>Entrar</span></a> </li> </ul> </div> </div> </div> <div id="vector-user-links-dropdown" class="vector-dropdown vector-user-menu vector-button-flush-right vector-user-menu-logged-out" title="Mais opções" > <input type="checkbox" id="vector-user-links-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-user-links-dropdown" class="vector-dropdown-checkbox " aria-label="Ferramentas pessoais" > <label id="vector-user-links-dropdown-label" for="vector-user-links-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-ellipsis mw-ui-icon-wikimedia-ellipsis"></span> <span class="vector-dropdown-label-text">Ferramentas pessoais</span> </label> <div class="vector-dropdown-content"> <div id="p-personal" class="vector-menu mw-portlet mw-portlet-personal user-links-collapsible-item" title="Menu do utilizador" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-sitesupport" class="user-links-collapsible-item mw-list-item"><a href="//donate.wikimedia.org/wiki/Special:FundraiserRedirector?utm_source=donate&amp;utm_medium=sidebar&amp;utm_campaign=20120521SB001&amp;uselang=pt"><span>Donativos</span></a></li><li id="pt-createaccount" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Especial:Criar_conta&amp;returnto=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29" title="É encorajado a criar uma conta e iniciar sessão; no entanto, não é obrigatório"><span class="vector-icon mw-ui-icon-userAdd mw-ui-icon-wikimedia-userAdd"></span> <span>Criar uma conta</span></a></li><li id="pt-login" class="user-links-collapsible-item mw-list-item"><a href="/w/index.php?title=Especial:Entrar&amp;returnto=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29" title="Aconselhamos-lhe a criar uma conta na Wikipédia, embora tal não seja obrigatório. [o]" accesskey="o"><span class="vector-icon mw-ui-icon-logIn mw-ui-icon-wikimedia-logIn"></span> <span>Entrar</span></a></li> </ul> </div> </div> <div id="p-user-menu-anon-editor" class="vector-menu mw-portlet mw-portlet-user-menu-anon-editor" > <div class="vector-menu-heading"> Páginas para editores sem sessão iniciada <a href="/wiki/Ajuda:Introduction" aria-label="Saiba mais sobre edição"><span>saber mais</span></a> </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="pt-anoncontribs" class="mw-list-item"><a href="/wiki/Especial:Minhas_contribui%C3%A7%C3%B5es" title="Uma lista de edições feitas a partir deste endereço IP [y]" accesskey="y"><span>Contribuições</span></a></li><li id="pt-anontalk" class="mw-list-item"><a href="/wiki/Especial:Minha_discuss%C3%A3o" title="Discussão sobre edições feitas a partir deste endereço IP [n]" accesskey="n"><span>Discussão</span></a></li> </ul> </div> </div> </div> </div> </nav> </div> </header> </div> <div class="mw-page-container"> <div class="mw-page-container-inner"> <div class="vector-sitenotice-container"> <div id="siteNotice"><div id="mw-dismissablenotice-anonplace"></div><script>(function(){var node=document.getElementById("mw-dismissablenotice-anonplace");if(node){node.outerHTML="\u003Cdiv class=\"mw-dismissable-notice\"\u003E\u003Cdiv class=\"mw-dismissable-notice-close\"\u003E[\u003Ca tabindex=\"0\" role=\"button\"\u003Eocultar\u003C/a\u003E]\u003C/div\u003E\u003Cdiv class=\"mw-dismissable-notice-body\"\u003E\u003C!-- CentralNotice --\u003E\u003Cdiv id=\"localNotice\" data-nosnippet=\"\"\u003E\u003Cdiv class=\"anonnotice\" lang=\"pt\" dir=\"ltr\"\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E\u003C/div\u003E";}}());</script></div> </div> <div class="vector-column-start"> <div class="vector-main-menu-container"> <div id="mw-navigation"> <nav id="mw-panel" class="vector-main-menu-landmark" aria-label="&#039;&#039;Site&#039;&#039;"> <div id="vector-main-menu-pinned-container" class="vector-pinned-container"> </div> </nav> </div> </div> <div class="vector-sticky-pinned-container"> <nav id="mw-panel-toc" aria-label="Conteúdo" data-event-name="ui.sidebar-toc" class="mw-table-of-contents-container vector-toc-landmark"> <div id="vector-toc-pinned-container" class="vector-pinned-container"> <div id="vector-toc" class="vector-toc vector-pinnable-element"> <div class="vector-pinnable-header vector-toc-pinnable-header vector-pinnable-header-pinned" data-feature-name="toc-pinned" data-pinnable-element-id="vector-toc" > <h2 class="vector-pinnable-header-label">Conteúdo</h2> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-toc.pin">mover para a barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-toc.unpin">ocultar</button> </div> <ul class="vector-toc-contents" id="mw-panel-toc-list"> <li id="toc-mw-content-text" class="vector-toc-list-item vector-toc-level-1"> <a href="#" class="vector-toc-link"> <div class="vector-toc-text">Início</div> </a> </li> <li id="toc-Algoritmos_recursivos" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Algoritmos_recursivos"> <div class="vector-toc-text"> <span class="vector-toc-numb">1</span> <span>Algoritmos recursivos</span> </div> </a> <ul id="toc-Algoritmos_recursivos-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Programação_recursiva" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Programação_recursiva"> <div class="vector-toc-text"> <span class="vector-toc-numb">2</span> <span>Programação recursiva</span> </div> </a> <button aria-controls="toc-Programação_recursiva-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Alternar a subsecção Programação recursiva</span> </button> <ul id="toc-Programação_recursiva-sublist" class="vector-toc-list"> <li id="toc-Recursão_versus_iteração" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Recursão_versus_iteração"> <div class="vector-toc-text"> <span class="vector-toc-numb">2.1</span> <span>Recursão <i>versus</i> iteração</span> </div> </a> <ul id="toc-Recursão_versus_iteração-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Funções_recursivas" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funções_recursivas"> <div class="vector-toc-text"> <span class="vector-toc-numb">3</span> <span>Funções recursivas</span> </div> </a> <ul id="toc-Funções_recursivas-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Funções_recursivas_em_cauda" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Funções_recursivas_em_cauda"> <div class="vector-toc-text"> <span class="vector-toc-numb">4</span> <span>Funções recursivas em cauda</span> </div> </a> <ul id="toc-Funções_recursivas_em_cauda-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Recursão_indireta" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Recursão_indireta"> <div class="vector-toc-text"> <span class="vector-toc-numb">5</span> <span>Recursão indireta</span> </div> </a> <ul id="toc-Recursão_indireta-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Recursão_aninhada" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Recursão_aninhada"> <div class="vector-toc-text"> <span class="vector-toc-numb">6</span> <span>Recursão aninhada</span> </div> </a> <ul id="toc-Recursão_aninhada-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ordem_de_chamada_de_funções" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Ordem_de_chamada_de_funções"> <div class="vector-toc-text"> <span class="vector-toc-numb">7</span> <span>Ordem de chamada de funções</span> </div> </a> <button aria-controls="toc-Ordem_de_chamada_de_funções-sublist" class="cdx-button cdx-button--weight-quiet cdx-button--icon-only vector-toc-toggle"> <span class="vector-icon mw-ui-icon-wikimedia-expand"></span> <span>Alternar a subsecção Ordem de chamada de funções</span> </button> <ul id="toc-Ordem_de_chamada_de_funções-sublist" class="vector-toc-list"> <li id="toc-Função_1" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Função_1"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.1</span> <span>Função 1</span> </div> </a> <ul id="toc-Função_1-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Função_2_com_linhas_trocadas" class="vector-toc-list-item vector-toc-level-2"> <a class="vector-toc-link" href="#Função_2_com_linhas_trocadas"> <div class="vector-toc-text"> <span class="vector-toc-numb">7.2</span> <span>Função 2 com linhas trocadas</span> </div> </a> <ul id="toc-Função_2_com_linhas_trocadas-sublist" class="vector-toc-list"> </ul> </li> </ul> </li> <li id="toc-Função_que_retorna_a_soma_dos_números_de_n_até_0" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Função_que_retorna_a_soma_dos_números_de_n_até_0"> <div class="vector-toc-text"> <span class="vector-toc-numb">8</span> <span>Função que retorna a soma dos números de n até 0</span> </div> </a> <ul id="toc-Função_que_retorna_a_soma_dos_números_de_n_até_0-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Divisão_de_números_com_recursão" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Divisão_de_números_com_recursão"> <div class="vector-toc-text"> <span class="vector-toc-numb">9</span> <span>Divisão de números com recursão</span> </div> </a> <ul id="toc-Divisão_de_números_com_recursão-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Usando_vetores" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Usando_vetores"> <div class="vector-toc-text"> <span class="vector-toc-numb">10</span> <span>Usando vetores</span> </div> </a> <ul id="toc-Usando_vetores-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ver_também" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Ver_também"> <div class="vector-toc-text"> <span class="vector-toc-numb">11</span> <span>Ver também</span> </div> </a> <ul id="toc-Ver_também-sublist" class="vector-toc-list"> </ul> </li> <li id="toc-Ligações_externas" class="vector-toc-list-item vector-toc-level-1 vector-toc-list-item-expanded"> <a class="vector-toc-link" href="#Ligações_externas"> <div class="vector-toc-text"> <span class="vector-toc-numb">12</span> <span>Ligações externas</span> </div> </a> <ul id="toc-Ligações_externas-sublist" class="vector-toc-list"> </ul> </li> </ul> </div> </div> </nav> </div> </div> <div class="mw-content-container"> <main id="content" class="mw-body"> <header class="mw-body-header vector-page-titlebar"> <nav aria-label="Conteúdo" class="vector-toc-landmark"> <div id="vector-page-titlebar-toc" class="vector-dropdown vector-page-titlebar-toc vector-button-flush-left" > <input type="checkbox" id="vector-page-titlebar-toc-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-titlebar-toc" class="vector-dropdown-checkbox " aria-label="Alternar o índice" > <label id="vector-page-titlebar-toc-label" for="vector-page-titlebar-toc-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--icon-only " aria-hidden="true" ><span class="vector-icon mw-ui-icon-listBullet mw-ui-icon-wikimedia-listBullet"></span> <span class="vector-dropdown-label-text">Alternar o índice</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-titlebar-toc-unpinned-container" class="vector-unpinned-container"> </div> </div> </div> </nav> <h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Recursividade (ciência da computação)</span></h1> <div id="p-lang-btn" class="vector-dropdown mw-portlet mw-portlet-lang" > <input type="checkbox" id="p-lang-btn-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-p-lang-btn" class="vector-dropdown-checkbox mw-interlanguage-selector" aria-label="Ir para um artigo noutra língua. Disponível em 28 línguas" > <label id="p-lang-btn-label" for="p-lang-btn-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet cdx-button--action-progressive mw-portlet-lang-heading-28" aria-hidden="true" ><span class="vector-icon mw-ui-icon-language-progressive mw-ui-icon-wikimedia-language-progressive"></span> <span class="vector-dropdown-label-text">28 línguas</span> </label> <div class="vector-dropdown-content"> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li class="interlanguage-link interwiki-ar mw-list-item"><a href="https://ar.wikipedia.org/wiki/%D8%B9%D9%88%D8%AF%D9%8A%D8%A9_(%D8%B9%D9%84%D9%85_%D8%A7%D9%84%D8%AD%D8%A7%D8%B3%D9%88%D8%A8)" title="عودية (علم الحاسوب) — árabe" lang="ar" hreflang="ar" data-title="عودية (علم الحاسوب)" data-language-autonym="العربية" data-language-local-name="árabe" class="interlanguage-link-target"><span>العربية</span></a></li><li class="interlanguage-link interwiki-bar mw-list-item"><a href="https://bar.wikipedia.org/wiki/Rekursive_Programmierung" title="Rekursive Programmierung — Bavarian" lang="bar" hreflang="bar" data-title="Rekursive Programmierung" data-language-autonym="Boarisch" data-language-local-name="Bavarian" class="interlanguage-link-target"><span>Boarisch</span></a></li><li class="interlanguage-link interwiki-ca mw-list-item"><a href="https://ca.wikipedia.org/wiki/Algorisme_recursiu" title="Algorisme recursiu — catalão" lang="ca" hreflang="ca" data-title="Algorisme recursiu" data-language-autonym="Català" data-language-local-name="catalão" class="interlanguage-link-target"><span>Català</span></a></li><li class="interlanguage-link interwiki-cs mw-list-item"><a href="https://cs.wikipedia.org/wiki/Rekurze_(programov%C3%A1n%C3%AD)" title="Rekurze (programování) — checo" lang="cs" hreflang="cs" data-title="Rekurze (programování)" data-language-autonym="Čeština" data-language-local-name="checo" class="interlanguage-link-target"><span>Čeština</span></a></li><li class="interlanguage-link interwiki-cv mw-list-item"><a href="https://cv.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BB%C4%83_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8" title="Рекурсивлă функци — chuvash" lang="cv" hreflang="cv" data-title="Рекурсивлă функци" data-language-autonym="Чӑвашла" data-language-local-name="chuvash" class="interlanguage-link-target"><span>Чӑвашла</span></a></li><li class="interlanguage-link interwiki-de mw-list-item"><a href="https://de.wikipedia.org/wiki/Rekursive_Programmierung" title="Rekursive Programmierung — alemão" lang="de" hreflang="de" data-title="Rekursive Programmierung" data-language-autonym="Deutsch" data-language-local-name="alemão" class="interlanguage-link-target"><span>Deutsch</span></a></li><li class="interlanguage-link interwiki-en mw-list-item"><a href="https://en.wikipedia.org/wiki/Recursion_(computer_science)" title="Recursion (computer science) — inglês" lang="en" hreflang="en" data-title="Recursion (computer science)" data-language-autonym="English" data-language-local-name="inglês" class="interlanguage-link-target"><span>English</span></a></li><li class="interlanguage-link interwiki-es mw-list-item"><a href="https://es.wikipedia.org/wiki/Recursi%C3%B3n_(ciencias_de_computaci%C3%B3n)" title="Recursión (ciencias de computación) — espanhol" lang="es" hreflang="es" data-title="Recursión (ciencias de computación)" data-language-autonym="Español" data-language-local-name="espanhol" class="interlanguage-link-target"><span>Español</span></a></li><li class="interlanguage-link interwiki-fa mw-list-item"><a href="https://fa.wikipedia.org/wiki/%D8%A8%D8%A7%D8%B2%DA%AF%D8%B4%D8%AA_(%D8%B9%D9%84%D9%88%D9%85_%D8%B1%D8%A7%DB%8C%D8%A7%D9%86%D9%87)" title="بازگشت (علوم رایانه) — persa" lang="fa" hreflang="fa" data-title="بازگشت (علوم رایانه)" data-language-autonym="فارسی" data-language-local-name="persa" class="interlanguage-link-target"><span>فارسی</span></a></li><li class="interlanguage-link interwiki-fi mw-list-item"><a href="https://fi.wikipedia.org/wiki/Rekursiivinen_algoritmi" title="Rekursiivinen algoritmi — finlandês" lang="fi" hreflang="fi" data-title="Rekursiivinen algoritmi" data-language-autonym="Suomi" data-language-local-name="finlandês" class="interlanguage-link-target"><span>Suomi</span></a></li><li class="interlanguage-link interwiki-fr mw-list-item"><a href="https://fr.wikipedia.org/wiki/Algorithme_r%C3%A9cursif" title="Algorithme récursif — francês" lang="fr" hreflang="fr" data-title="Algorithme récursif" data-language-autonym="Français" data-language-local-name="francês" class="interlanguage-link-target"><span>Français</span></a></li><li class="interlanguage-link interwiki-hi mw-list-item"><a href="https://hi.wikipedia.org/wiki/%E0%A4%AA%E0%A5%81%E0%A4%A8%E0%A4%B0%E0%A4%BE%E0%A4%B5%E0%A5%83%E0%A4%A4%E0%A5%8D%E0%A4%A4%E0%A4%BF_(%E0%A4%95%E0%A4%82%E0%A4%AA%E0%A5%8D%E0%A4%AF%E0%A5%82%E0%A4%9F%E0%A4%B0_%E0%A4%B5%E0%A4%BF%E0%A4%9C%E0%A5%8D%E0%A4%9E%E0%A4%BE%E0%A4%A8)" title="पुनरावृत्ति (कंप्यूटर विज्ञान) — hindi" lang="hi" hreflang="hi" data-title="पुनरावृत्ति (कंप्यूटर विज्ञान)" data-language-autonym="हिन्दी" data-language-local-name="hindi" class="interlanguage-link-target"><span>हिन्दी</span></a></li><li class="interlanguage-link interwiki-hy mw-list-item"><a href="https://hy.wikipedia.org/wiki/%D5%8C%D5%A5%D5%AF%D5%B8%D6%82%D6%80%D5%BD%D5%AB%D5%A1_(%D5%AB%D5%B6%D6%86%D5%B8%D6%80%D5%B4%D5%A1%D5%BF%D5%AB%D5%AF%D5%A1)" title="Ռեկուրսիա (ինֆորմատիկա) — arménio" lang="hy" hreflang="hy" data-title="Ռեկուրսիա (ինֆորմատիկա)" data-language-autonym="Հայերեն" data-language-local-name="arménio" class="interlanguage-link-target"><span>Հայերեն</span></a></li><li class="interlanguage-link interwiki-it mw-list-item"><a href="https://it.wikipedia.org/wiki/Algoritmo_ricorsivo" title="Algoritmo ricorsivo — italiano" lang="it" hreflang="it" data-title="Algoritmo ricorsivo" data-language-autonym="Italiano" data-language-local-name="italiano" class="interlanguage-link-target"><span>Italiano</span></a></li><li class="interlanguage-link interwiki-ja badge-Q70893996 mw-list-item" title=""><a href="https://ja.wikipedia.org/wiki/%E5%86%8D%E5%B8%B0%E7%9A%84%E3%82%A2%E3%83%AB%E3%82%B4%E3%83%AA%E3%82%BA%E3%83%A0" title="再帰的アルゴリズム — japonês" lang="ja" hreflang="ja" data-title="再帰的アルゴリズム" data-language-autonym="日本語" data-language-local-name="japonês" class="interlanguage-link-target"><span>日本語</span></a></li><li class="interlanguage-link interwiki-kk mw-list-item"><a href="https://kk.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D1%82%D1%96_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F" title="Рекурсивті функция — cazaque" lang="kk" hreflang="kk" data-title="Рекурсивті функция" data-language-autonym="Қазақша" data-language-local-name="cazaque" class="interlanguage-link-target"><span>Қазақша</span></a></li><li class="interlanguage-link interwiki-ko mw-list-item"><a href="https://ko.wikipedia.org/wiki/%EC%9E%AC%EA%B7%80_(%EC%BB%B4%ED%93%A8%ED%84%B0_%EA%B3%BC%ED%95%99)" title="재귀 (컴퓨터 과학) — coreano" lang="ko" hreflang="ko" data-title="재귀 (컴퓨터 과학)" data-language-autonym="한국어" data-language-local-name="coreano" class="interlanguage-link-target"><span>한국어</span></a></li><li class="interlanguage-link interwiki-nl mw-list-item"><a href="https://nl.wikipedia.org/wiki/Recursie_(informatica)" title="Recursie (informatica) — neerlandês" lang="nl" hreflang="nl" data-title="Recursie (informatica)" data-language-autonym="Nederlands" data-language-local-name="neerlandês" class="interlanguage-link-target"><span>Nederlands</span></a></li><li class="interlanguage-link interwiki-ru mw-list-item"><a href="https://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D0%B8%D0%B2%D0%BD%D0%B0%D1%8F_%D1%84%D1%83%D0%BD%D0%BA%D1%86%D0%B8%D1%8F" title="Рекурсивная функция — russo" lang="ru" hreflang="ru" data-title="Рекурсивная функция" data-language-autonym="Русский" data-language-local-name="russo" class="interlanguage-link-target"><span>Русский</span></a></li><li class="interlanguage-link interwiki-simple mw-list-item"><a href="https://simple.wikipedia.org/wiki/Recursive_algorithm" title="Recursive algorithm — Simple English" lang="en-simple" hreflang="en-simple" data-title="Recursive algorithm" data-language-autonym="Simple English" data-language-local-name="Simple English" class="interlanguage-link-target"><span>Simple English</span></a></li><li class="interlanguage-link interwiki-sk mw-list-item"><a href="https://sk.wikipedia.org/wiki/Rekurzia_(informatika)" title="Rekurzia (informatika) — eslovaco" lang="sk" hreflang="sk" data-title="Rekurzia (informatika)" data-language-autonym="Slovenčina" data-language-local-name="eslovaco" class="interlanguage-link-target"><span>Slovenčina</span></a></li><li class="interlanguage-link interwiki-sr mw-list-item"><a href="https://sr.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D0%B7%D0%B8%D1%98%D0%B0_(%D0%BA%D0%BE%D0%BC%D0%BF%D1%98%D1%83%D1%82%D0%B5%D1%80%D1%81%D0%BA%D0%B5_%D0%BD%D0%B0%D1%83%D0%BA%D0%B5)" title="Рекурзија (компјутерске науке) — sérvio" lang="sr" hreflang="sr" data-title="Рекурзија (компјутерске науке)" data-language-autonym="Српски / srpski" data-language-local-name="sérvio" class="interlanguage-link-target"><span>Српски / srpski</span></a></li><li class="interlanguage-link interwiki-sv mw-list-item"><a href="https://sv.wikipedia.org/wiki/Rekursiv_algoritm" title="Rekursiv algoritm — sueco" lang="sv" hreflang="sv" data-title="Rekursiv algoritm" data-language-autonym="Svenska" data-language-local-name="sueco" class="interlanguage-link-target"><span>Svenska</span></a></li><li class="interlanguage-link interwiki-ta mw-list-item"><a href="https://ta.wikipedia.org/wiki/%E0%AE%9A%E0%AF%81%E0%AE%B4%E0%AE%B2%E0%AF%8D" title="சுழல் — tâmil" lang="ta" hreflang="ta" data-title="சுழல்" data-language-autonym="தமிழ்" data-language-local-name="tâmil" class="interlanguage-link-target"><span>தமிழ்</span></a></li><li class="interlanguage-link interwiki-uk mw-list-item"><a href="https://uk.wikipedia.org/wiki/%D0%A0%D0%B5%D0%BA%D1%83%D1%80%D1%81%D1%96%D1%8F_(%D0%BF%D1%80%D0%BE%D0%B3%D1%80%D0%B0%D0%BC%D1%83%D0%B2%D0%B0%D0%BD%D0%BD%D1%8F)" title="Рекурсія (програмування) — ucraniano" lang="uk" hreflang="uk" data-title="Рекурсія (програмування)" data-language-autonym="Українська" data-language-local-name="ucraniano" class="interlanguage-link-target"><span>Українська</span></a></li><li class="interlanguage-link interwiki-vi mw-list-item"><a href="https://vi.wikipedia.org/wiki/%C4%90%E1%BB%87_quy_(tin_h%E1%BB%8Dc)" title="Đệ quy (tin học) — vietnamita" lang="vi" hreflang="vi" data-title="Đệ quy (tin học)" data-language-autonym="Tiếng Việt" data-language-local-name="vietnamita" class="interlanguage-link-target"><span>Tiếng Việt</span></a></li><li class="interlanguage-link interwiki-zh mw-list-item"><a href="https://zh.wikipedia.org/wiki/%E9%80%92%E5%BD%92_(%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6)" title="递归 (计算机科学) — chinês" lang="zh" hreflang="zh" data-title="递归 (计算机科学)" data-language-autonym="中文" data-language-local-name="chinês" class="interlanguage-link-target"><span>中文</span></a></li><li class="interlanguage-link interwiki-zh-yue mw-list-item"><a href="https://zh-yue.wikipedia.org/wiki/%E9%81%9E%E6%AD%B8_(%E9%9B%BB%E8%85%A6%E7%A7%91%E5%AD%B8)" title="遞歸 (電腦科學) — cantonês" lang="yue" hreflang="yue" data-title="遞歸 (電腦科學)" data-language-autonym="粵語" data-language-local-name="cantonês" class="interlanguage-link-target"><span>粵語</span></a></li> </ul> <div class="after-portlet after-portlet-lang"><span class="wb-langlinks-edit wb-langlinks-link"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q264164#sitelinks-wikipedia" title="Editar hiperligações interlínguas" class="wbc-editpage">Editar hiperligações</a></span></div> </div> </div> </div> </header> <div class="vector-page-toolbar"> <div class="vector-page-toolbar-container"> <div id="left-navigation"> <nav aria-label="Espaços nominais"> <div id="p-associated-pages" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-associated-pages" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-nstab-main" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)" title="Ver a página de conteúdo [c]" accesskey="c"><span>Artigo</span></a></li><li id="ca-talk" class="vector-tab-noicon mw-list-item"><a href="/wiki/Discuss%C3%A3o:Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)" rel="discussion" title="Discussão sobre o conteúdo da página [t]" accesskey="t"><span>Discussão</span></a></li> </ul> </div> </div> <div id="vector-variants-dropdown" class="vector-dropdown emptyPortlet" > <input type="checkbox" id="vector-variants-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-variants-dropdown" class="vector-dropdown-checkbox " aria-label="Mudar a variante da língua" > <label id="vector-variants-dropdown-label" for="vector-variants-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">português</span> </label> <div class="vector-dropdown-content"> <div id="p-variants" class="vector-menu mw-portlet mw-portlet-variants emptyPortlet" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> </ul> </div> </div> </div> </div> </nav> </div> <div id="right-navigation" class="vector-collapsible"> <nav aria-label="Vistas"> <div id="p-views" class="vector-menu vector-menu-tabs mw-portlet mw-portlet-views" > <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-view" class="selected vector-tab-noicon mw-list-item"><a href="/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)"><span>Ler</span></a></li><li id="ca-ve-edit" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit" title="Editar esta página [v]" accesskey="v"><span>Editar</span></a></li><li id="ca-edit" class="collapsible vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit" title="Editar o código-fonte desta página [e]" accesskey="e"><span>Editar código-fonte</span></a></li><li id="ca-history" class="vector-tab-noicon mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=history" title="Edições anteriores desta página. [h]" accesskey="h"><span>Ver histórico</span></a></li> </ul> </div> </div> </nav> <nav class="vector-page-tools-landmark" aria-label="Ferramentas de página"> <div id="vector-page-tools-dropdown" class="vector-dropdown vector-page-tools-dropdown" > <input type="checkbox" id="vector-page-tools-dropdown-checkbox" role="button" aria-haspopup="true" data-event-name="ui.dropdown-vector-page-tools-dropdown" class="vector-dropdown-checkbox " aria-label="Ferramentas" > <label id="vector-page-tools-dropdown-label" for="vector-page-tools-dropdown-checkbox" class="vector-dropdown-label cdx-button cdx-button--fake-button cdx-button--fake-button--enabled cdx-button--weight-quiet" aria-hidden="true" ><span class="vector-dropdown-label-text">Ferramentas</span> </label> <div class="vector-dropdown-content"> <div id="vector-page-tools-unpinned-container" class="vector-unpinned-container"> <div id="vector-page-tools" class="vector-page-tools vector-pinnable-element"> <div class="vector-pinnable-header vector-page-tools-pinnable-header vector-pinnable-header-unpinned" data-feature-name="page-tools-pinned" data-pinnable-element-id="vector-page-tools" data-pinned-container-id="vector-page-tools-pinned-container" data-unpinned-container-id="vector-page-tools-unpinned-container" > <div class="vector-pinnable-header-label">Ferramentas</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-page-tools.pin">mover para a barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-page-tools.unpin">ocultar</button> </div> <div id="p-cactions" class="vector-menu mw-portlet mw-portlet-cactions emptyPortlet vector-has-collapsible-items" title="Mais opções" > <div class="vector-menu-heading"> Operações </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="ca-more-view" class="selected vector-more-collapsible-item mw-list-item"><a href="/wiki/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)"><span>Ler</span></a></li><li id="ca-more-ve-edit" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit" title="Editar esta página [v]" accesskey="v"><span>Editar</span></a></li><li id="ca-more-edit" class="collapsible vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit" title="Editar o código-fonte desta página [e]" accesskey="e"><span>Editar código-fonte</span></a></li><li id="ca-more-history" class="vector-more-collapsible-item mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=history"><span>Ver histórico</span></a></li> </ul> </div> </div> <div id="p-tb" class="vector-menu mw-portlet mw-portlet-tb" > <div class="vector-menu-heading"> Geral </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-whatlinkshere" class="mw-list-item"><a href="/wiki/Especial:P%C3%A1ginas_afluentes/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)" title="Lista de todas as páginas que contêm hiperligações para esta [j]" accesskey="j"><span>Páginas afluentes</span></a></li><li id="t-recentchangeslinked" class="mw-list-item"><a href="/wiki/Especial:Altera%C3%A7%C3%B5es_relacionadas/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)" rel="nofollow" title="Mudanças recentes nas páginas para as quais esta contém hiperligações [k]" accesskey="k"><span>Alterações relacionadas</span></a></li><li id="t-upload" class="mw-list-item"><a href="/wiki/Wikipedia:Carregar_ficheiro" title="Carregar ficheiros [u]" accesskey="u"><span>Carregar ficheiro</span></a></li><li id="t-specialpages" class="mw-list-item"><a href="/wiki/Especial:P%C3%A1ginas_especiais" title="Lista de páginas especiais [q]" accesskey="q"><span>Páginas especiais</span></a></li><li id="t-permalink" class="mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;oldid=60539811" title="Hiperligação permanente para esta revisão desta página"><span>Hiperligação permanente</span></a></li><li id="t-info" class="mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=info" title="Mais informações sobre esta página"><span>Informações da página</span></a></li><li id="t-cite" class="mw-list-item"><a href="/w/index.php?title=Especial:Citar&amp;page=Recursividade_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29&amp;id=60539811&amp;wpFormIdentifier=titleform" title="Informação sobre como citar esta página"><span>Citar esta página</span></a></li><li id="t-urlshortener" class="mw-list-item"><a href="/w/index.php?title=Especial:UrlShortener&amp;url=https%3A%2F%2Fpt.wikipedia.org%2Fwiki%2FRecursividade_%28ci%25C3%25AAncia_da_computa%25C3%25A7%25C3%25A3o%29"><span>Obter URL encurtado</span></a></li><li id="t-urlshortener-qrcode" class="mw-list-item"><a href="/w/index.php?title=Especial:QrCode&amp;url=https%3A%2F%2Fpt.wikipedia.org%2Fwiki%2FRecursividade_%28ci%25C3%25AAncia_da_computa%25C3%25A7%25C3%25A3o%29"><span>Descarregar código QR</span></a></li> </ul> </div> </div> <div id="p-coll-print_export" class="vector-menu mw-portlet mw-portlet-coll-print_export" > <div class="vector-menu-heading"> Imprimir/exportar </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="coll-create_a_book" class="mw-list-item"><a href="/w/index.php?title=Especial:Livro&amp;bookcmd=book_creator&amp;referer=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29"><span>Criar um livro</span></a></li><li id="coll-download-as-rl" class="mw-list-item"><a href="/w/index.php?title=Especial:DownloadAsPdf&amp;page=Recursividade_%28ci%C3%AAncia_da_computa%C3%A7%C3%A3o%29&amp;action=show-download-screen"><span>Descarregar como PDF</span></a></li><li id="t-print" class="mw-list-item"><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;printable=yes" title="Versão para impressão desta página [p]" accesskey="p"><span>Versão para impressão</span></a></li> </ul> </div> </div> <div id="p-wikibase-otherprojects" class="vector-menu mw-portlet mw-portlet-wikibase-otherprojects" > <div class="vector-menu-heading"> Noutros projetos </div> <div class="vector-menu-content"> <ul class="vector-menu-content-list"> <li id="t-wikibase" class="wb-otherproject-link wb-otherproject-wikibase-dataitem mw-list-item"><a href="https://www.wikidata.org/wiki/Special:EntityPage/Q264164" title="Hiperligação para o elemento do repositório de dados [g]" accesskey="g"><span>Elemento Wikidata</span></a></li> </ul> </div> </div> </div> </div> </div> </div> </nav> </div> </div> </div> <div class="vector-column-end"> <div class="vector-sticky-pinned-container"> <nav class="vector-page-tools-landmark" aria-label="Ferramentas de página"> <div id="vector-page-tools-pinned-container" class="vector-pinned-container"> </div> </nav> <nav class="vector-appearance-landmark" aria-label="Aspeto"> <div id="vector-appearance-pinned-container" class="vector-pinned-container"> <div id="vector-appearance" class="vector-appearance vector-pinnable-element"> <div class="vector-pinnable-header vector-appearance-pinnable-header vector-pinnable-header-pinned" data-feature-name="appearance-pinned" data-pinnable-element-id="vector-appearance" data-pinned-container-id="vector-appearance-pinned-container" data-unpinned-container-id="vector-appearance-unpinned-container" > <div class="vector-pinnable-header-label">Aspeto</div> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-pin-button" data-event-name="pinnable-header.vector-appearance.pin">mover para a barra lateral</button> <button class="vector-pinnable-header-toggle-button vector-pinnable-header-unpin-button" data-event-name="pinnable-header.vector-appearance.unpin">ocultar</button> </div> </div> </div> </nav> </div> </div> <div id="bodyContent" class="vector-body" aria-labelledby="firstHeading" data-mw-ve-target-container> <div class="vector-body-before-content"> <div class="mw-indicators"> </div> <div id="siteSub" class="noprint">Origem: Wikipédia, a enciclopédia livre.</div> </div> <div id="contentSub"><div id="mw-content-subtitle"></div></div> <div id="mw-content-text" class="mw-body-content"><div class="mw-content-ltr mw-parser-output" lang="pt" dir="ltr"><style data-mw-deduplicate="TemplateStyles:r68971778">.mw-parser-output .ambox{border:1px solid #a2a9b1;border-left:10px solid #36c;background-color:#fbfbfb;box-sizing:border-box}.mw-parser-output .ambox+link+.ambox,.mw-parser-output .ambox+link+style+.ambox,.mw-parser-output .ambox+link+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+style+.ambox,.mw-parser-output .ambox+.mw-empty-elt+link+link+.ambox{margin-top:-1px}html body.mediawiki .mw-parser-output .ambox.mbox-small-left{margin:4px 1em 4px 0;overflow:hidden;width:238px;border-collapse:collapse;font-size:88%;line-height:1.25em}.mw-parser-output .ambox-speedy{border-left:10px solid #b32424;background-color:#fee7e6}.mw-parser-output .ambox-delete{border-left:10px solid #b32424}.mw-parser-output .ambox-content{border-left:10px solid #f28500}.mw-parser-output .ambox-style{border-left:10px solid #fc3}.mw-parser-output .ambox-move{border-left:10px solid #9932cc}.mw-parser-output .ambox-protection{border-left:10px solid #a2a9b1}.mw-parser-output .ambox .mbox-text{border:none;padding:0.25em 0.5em;width:100%}.mw-parser-output .ambox .mbox-image{border:none;padding:2px 0 2px 0.5em;text-align:center}.mw-parser-output .ambox .mbox-imageright{border:none;padding:2px 0.5em 2px 0;text-align:center}.mw-parser-output .ambox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ambox .mbox-image-div{width:52px}@media(min-width:720px){.mw-parser-output .ambox{margin:0 10%}}.mw-parser-output .cmbox{margin:3px 0;border-collapse:collapse;border:1px solid #a2a9b1;background-color:#dfe8ff;box-sizing:border-box;color:var(--color-base)}.mw-parser-output .cmbox-speedy{border:4px solid #b32424;background-color:#ffdbdb}.mw-parser-output .cmbox-delete{background-color:#ffdbdb}.mw-parser-output .cmbox-content{background-color:#ffe7ce}.mw-parser-output .cmbox-style{background-color:#fff9db}.mw-parser-output .cmbox-move{background-color:#e4d8ff}.mw-parser-output .cmbox-protection{background-color:#efefe1}.mw-parser-output .cmbox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .cmbox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .cmbox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .cmbox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .cmbox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .cmbox{margin:3px 10%}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .cmbox{background-color:#0d1a27}html.skin-theme-clientpref-night .mw-parser-output .cmbox-speedy,html.skin-theme-clientpref-night .mw-parser-output .cmbox-delete{background-color:#300}html.skin-theme-clientpref-night .mw-parser-output .cmbox-content{background-color:#331a00}html.skin-theme-clientpref-night .mw-parser-output .cmbox-style{background-color:#332b00}html.skin-theme-clientpref-night .mw-parser-output .cmbox-move{background-color:#08001a}html.skin-theme-clientpref-night .mw-parser-output .cmbox-protection{background-color:#212112}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cmbox{background-color:#0d1a27}html.skin-theme-clientpref-os .mw-parser-output .cmbox-speedy,html.skin-theme-clientpref-os .mw-parser-output .cmbox-delete{background-color:#300}html.skin-theme-clientpref-os .mw-parser-output .cmbox-content{background-color:#331a00}html.skin-theme-clientpref-os .mw-parser-output .cmbox-style{background-color:#332b00}html.skin-theme-clientpref-os .mw-parser-output .cmbox-move{background-color:#08001a}html.skin-theme-clientpref-os .mw-parser-output .cmbox-protection{background-color:#212112}}.mw-parser-output .fmbox{clear:both;margin:0.2em 0;width:100%;border:1px solid #a2a9b1;background-color:var(--background-color-interactive-subtle,#f8f9fa);box-sizing:border-box;color:var(--color-base,#202122)}.mw-parser-output .fmbox-warning{border:1px solid #bb7070;background-color:#ffdbdb}.mw-parser-output .fmbox-editnotice{background-color:transparent}.mw-parser-output .fmbox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .fmbox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .fmbox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .fmbox .mbox-invalid-type{text-align:center}@media screen{html.skin-theme-clientpref-night .mw-parser-output .fmbox-warning{background-color:#683131}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .fmbox-warning{background-color:#683131}}.mw-parser-output .imbox{margin:4px 0;border-collapse:collapse;border:3px solid #36c;background-color:var(--background-color-interactive-subtle,#f8f9fa);box-sizing:border-box}.mw-parser-output .imbox .mbox-text .imbox{margin:0 -0.5em;display:block}.mw-parser-output .imbox-speedy{border:3px solid #b32424;background-color:#fee7e6}.mw-parser-output .imbox-delete{border:3px solid #b32424}.mw-parser-output .imbox-content{border:3px solid #f28500}.mw-parser-output .imbox-style{border:3px solid #fc3}.mw-parser-output .imbox-move{border:3px solid #9932cc}.mw-parser-output .imbox-protection{border:3px solid #a2a9b1}.mw-parser-output .imbox-license{border:3px solid #88a}.mw-parser-output .imbox-featured{border:3px solid #cba135}.mw-parser-output .imbox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .imbox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .imbox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .imbox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .imbox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .imbox{margin:4px 10%}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .imbox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .imbox-speedy{background-color:#310402}}.mw-parser-output .ombox{margin:4px 0;border-collapse:collapse;background-color:var(--background-color-neutral-subtle,#f8f9fa);box-sizing:border-box;border:1px solid #a2a9b1;color:var(--color-base,#202122)}.mw-parser-output .ombox.mbox-small{font-size:88%;line-height:1.25em}.mw-parser-output .ombox-speedy{border:2px solid #b32424;background-color:#fee7e6}.mw-parser-output .ombox-delete{border:2px solid #b32424}.mw-parser-output .ombox-content{border:1px solid #f28500}.mw-parser-output .ombox-style{border:1px solid #fc3}.mw-parser-output .ombox-move{border:1px solid #9932cc}.mw-parser-output .ombox-protection{border:2px solid #a2a9b1}.mw-parser-output .ombox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .ombox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .ombox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .ombox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .ombox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .ombox{margin:4px 10%}.mw-parser-output .ombox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px}}body.skin--responsive .mw-parser-output table.ombox img{max-width:none!important}@media screen{html.skin-theme-clientpref-night .mw-parser-output .ombox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .ombox-speedy{background-color:#310402}}.mw-parser-output .tmbox{margin:4px 0;border-collapse:collapse;border:1px solid #c0c090;background-color:#f8eaba;box-sizing:border-box}.mw-parser-output .tmbox.mbox-small{font-size:88%;line-height:1.25em}.mw-parser-output .tmbox-speedy{border:2px solid #b32424;background-color:#fee7e6}.mw-parser-output .tmbox-delete{border:2px solid #b32424}.mw-parser-output .tmbox-content{border:1px solid #c0c090}.mw-parser-output .tmbox-style{border:2px solid #fc3}.mw-parser-output .tmbox-move{border:2px solid #9932cc}.mw-parser-output .tmbox .mbox-text{border:none;padding:0.25em 0.9em;width:100%}.mw-parser-output .tmbox .mbox-image{border:none;padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .tmbox .mbox-imageright{border:none;padding:2px 0.9em 2px 0;text-align:center}.mw-parser-output .tmbox .mbox-empty-cell{border:none;padding:0;width:1px}.mw-parser-output .tmbox .mbox-invalid-type{text-align:center}@media(min-width:720px){.mw-parser-output .tmbox{margin:4px 10%}.mw-parser-output .tmbox.mbox-small{clear:right;float:right;margin:4px 0 4px 1em;width:238px}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .tmbox{background-color:#2e2505}html.skin-theme-clientpref-night .mw-parser-output .tmbox-speedy{background-color:#310402}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .tmbox{background-color:#2e2505}html.skin-theme-clientpref-os .mw-parser-output .tmbox-speedy{background-color:#310402}}body.skin--responsive .mw-parser-output table.tmbox img{max-width:none!important}</style><table class="box-Sem_fontes plainlinks metadata ambox ambox-content ambox-Unreferenced" role="presentation"><tbody><tr><td class="mbox-image"><div style="width:52px"><span typeof="mw:File"><a href="/wiki/Ficheiro:Question_book.svg" class="mw-file-description"><img alt="" src="//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/40px-Question_book.svg.png" decoding="async" width="40" height="32" class="mw-file-element" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/60px-Question_book.svg.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/9/97/Question_book.svg/80px-Question_book.svg.png 2x" data-file-width="252" data-file-height="199" /></a></span></div></td><td class="mbox-text"><div class="mbox-text-span">Este artigo <b>não cita <a href="/wiki/Wikip%C3%A9dia:Verificabilidade" title="Wikipédia:Verificabilidade">fontes confiáveis</a></b>.<span class="hide-when-compact"> Ajude a <a href="/wiki/Wikip%C3%A9dia:Livro_de_estilo/Cite_as_fontes" title="Wikipédia:Livro de estilo/Cite as fontes">inserir referências</a>. Conteúdo não <a href="/wiki/Wikip%C3%A9dia:Verificabilidade" title="Wikipédia:Verificabilidade">verificável</a> pode ser removido.—<small><i>Encontre fontes:</i> <span class="plainlinks"><a rel="nofollow" class="external text" href="https://wikipedialibrary.wmflabs.org/">ABW</a> &#160;&#8226;&#32; <a rel="nofollow" class="external text" href="https://www.periodicos.capes.gov.br">CAPES</a> &#160;&#8226;&#32; <a rel="nofollow" class="external text" href="https://www.google.com/search?as_eq=wikipedia&amp;as_epq=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29">Google</a> (<a rel="nofollow" class="external text" href="https://www.google.com/search?hl=pt&amp;tbm=nws&amp;q=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29&amp;oq=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29">N</a>&#160;&#8226;&#32;<a rel="nofollow" class="external text" href="http://books.google.com/books?&amp;as_brr=0&amp;as_epq=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29">L</a>&#160;&#8226;&#32;<a rel="nofollow" class="external text" href="https://scholar.google.com/scholar?hl=pt&amp;q=Recursividade+%28ci%C3%AAncia+da+computa%C3%A7%C3%A3o%29">A</a>)</span></small></span> <small class="date-container"><i>(<span class="date">Outubro de 2016</span>)</i></small></div></td></tr></tbody></table> <p>Em <a href="/wiki/Ci%C3%AAncia_da_computa%C3%A7%C3%A3o" title="Ciência da computação">ciência da computação</a>, a <b>recursividade</b> é a definição de uma <a href="/wiki/Sub-rotina" class="mw-redirect" title="Sub-rotina">sub-rotina</a> (função ou método) que pode invocar a si mesma. Um exemplo de aplicação da <a href="/wiki/Recursividade" title="Recursividade">recursividade</a> pode ser encontrado nos <a href="/wiki/Analisador_sint%C3%A1tico_descendente_recursivo" title="Analisador sintático descendente recursivo">analisadores sintáticos recursivos</a> para <a href="/wiki/Linguagem_de_programa%C3%A7%C3%A3o" title="Linguagem de programação">linguagens de programação</a>. A grande vantagem da recursão está na possibilidade de usar um <a href="/wiki/Programa_de_computador" title="Programa de computador">programa de computador</a> finito para definir, analisar ou produzir um estoque potencialmente infinito de sentenças, <i>designs</i> ou outros dados. </p> <meta property="mw:PageProp/toc" /> <div class="mw-heading mw-heading2"><h2 id="Algoritmos_recursivos">Algoritmos recursivos</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=1" title="Editar secção: Algoritmos recursivos" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=1" title="Editar código-fonte da secção: Algoritmos recursivos"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Um método comum de simplificação consiste em dividir um problema em subproblemas do mesmo tipo. Como técnica de <a href="/wiki/Programa%C3%A7%C3%A3o" class="mw-redirect" title="Programação">programação</a>, isto se denomina <a href="/wiki/Divis%C3%A3o_e_conquista" title="Divisão e conquista">divisão e conquista</a>, e constitui a chave para o desenvolvimento de muitos <a href="/wiki/Algoritmo" title="Algoritmo">algoritmos</a> importantes, bem como um elemento fundamental do paradigma de <a href="/wiki/Programa%C3%A7%C3%A3o_din%C3%A2mica" title="Programação dinâmica">programação dinâmica</a>. </p><p>Praticamente todas as <a href="/wiki/Linguagem_de_programa%C3%A7%C3%A3o" title="Linguagem de programação">linguagens de programação</a> usadas hoje em dia permitem a especificação direta de <a href="/wiki/Sub-rotina" class="mw-redirect" title="Sub-rotina">funções</a> e procedimentos recursivos. Quando uma função é invocada, o computador (na maioria das linguagens sobre a maior parte das arquiteturas baseadas em <a href="/wiki/LIFO" title="LIFO">pilhas</a>) ou a implementação da linguagem registra as várias instâncias de uma função (em muitas arquiteturas, usa-se uma <a href="/wiki/Pilha_de_chamada" title="Pilha de chamada">pilha de chamada</a>, embora outros métodos possam ser usados). Reciprocamente, toda função recursiva pode ser transformada em uma função iterativa usando uma pilha. </p><p>Toda função que puder ser produzida por um computador pode ser escrita como função recursiva sem o uso de iteração; reciprocamente, qualquer função recursiva pode ser descrita através de iterações sucessivas. </p><p>Um exemplo simples poderia ser o seguinte: se uma palavra desconhecida é vista em um livro, o leitor pode tomar nota do número da página e colocar em uma pilha (que até então está vazia). O leitor pode consultar esta nova palavra e, enquanto lê o texto, pode achar mais palavras desconhecidas e acrescentar no topo da pilha. O número da página em que estas palavras ocorrem também são colocados no topo da pilha. Em algum momento do texto, o leitor vai achar uma frase ou um parágrafo onde está a última palavra anotada e pelo contexto da frase vai descobrir o seu significado. Então o leitor volta para a página anterior e continua lendo dali. Paulatinamente, remove-se seqüencialmente cada anotação que está no topo da pilha. Finalmente, o leitor volta para a sua leitura já sabendo o significado da(s) palavra(s) desconhecida(s). Isto é uma forma de recursão. </p><p>Algumas linguagens desenvolvidas para <a href="/wiki/Programa%C3%A7%C3%A3o_l%C3%B3gica" title="Programação lógica">programação lógica</a> e <a href="/wiki/Programa%C3%A7%C3%A3o_funcional" title="Programação funcional">programação funcional</a> permitem recursões como única estrutura de repetição, ou seja, não podem usar laços tais como os produzidos por comandos como <code>for</code>, <code>while</code> ou <code>repeat</code>. Tais linguagens geralmente fazem uma <a href="/w/index.php?title=Recurs%C3%A3o_em_cauda&amp;action=edit&amp;redlink=1" class="new" title="Recursão em cauda (página não existe)">recursão em cauda</a> tão eficiente quanto a iteração, deixando os <a href="/wiki/Programador" title="Programador">programadores</a> exprimirem outras estruturas de repetição (tais como o <code>map</code> e o <code>for</code> do <a href="/wiki/Scheme" title="Scheme">Scheme</a>) em termos de recursão. </p><p>A recursão está profundamente entranhada na <a href="/wiki/Teoria_da_computa%C3%A7%C3%A3o" title="Teoria da computação">Teoria da computação</a>, uma vez que a equivalência teórica entre as funções <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mu }"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>&#x03BC;<!-- μ --></mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle \mu }</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/9fd47b2a39f7a7856952afec1f1db72c67af6161" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:1.402ex; height:2.176ex;" alt="{\displaystyle \mu }"></span>-recursivas e as <a href="/wiki/M%C3%A1quina_de_Turing" title="Máquina de Turing">máquinas de Turing</a> está na base das idéias sobre a universalidade do computador moderno. </p> <div class="mw-heading mw-heading2"><h2 id="Programação_recursiva"><span id="Programa.C3.A7.C3.A3o_recursiva"></span>Programação recursiva</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=2" title="Editar secção: Programação recursiva" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=2" title="Editar código-fonte da secção: Programação recursiva"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Em geral, uma definição recursiva é definida por casos: um número limitado de casos base e um caso recursivo. Os casos base são geralmente situações triviais e não envolvem recursão. </p><p>Um exemplo comum usando recursão é a função para calcular o <a href="/wiki/Fatorial" title="Fatorial">fatorial</a> de um <a href="/wiki/N%C3%BAmero_natural" title="Número natural">natural</a> N. Nesse caso, no caso base o valor de 0! é 1. No caso recursivo, dado um N &gt; 0, o valor de N! é calculado multiplicando por N o valor de (N-1)!, e assim por diante, de tal forma que N! tem como valor N * (N-1) * (N-2) * ... * (N-N)!, onde (N-N)! representa obviamente o caso base. Em termos recursivos: </p> <pre>função fatorial(x: inteiro): inteiro inicio se x = 0 então fatorial &lt;- 1 senão fatorial &lt;- x * fatorial(x - 1) fim_se fim </pre> <p>Aqui está a mesma função codificada sem recursão. É importante mencionar que esta solução iterativa requer duas <a href="/wiki/Vari%C3%A1vel_(programa%C3%A7%C3%A3o)" title="Variável (programação)">variáveis</a> temporárias; em geral, formulações recursivas de algoritmos são frequentemente consideradas "mais enxutas" ou "mais elegantes" do que formulações iterativas. </p> <pre>função fatorial(x: inteiro): inteiro var i, aux: inteiro inicio aux &lt;- 1 para i de 1 até x faça aux &lt;- aux * i fim_para fatorial &lt;- aux fim </pre> <div class="mw-heading mw-heading3"><h3 id="Recursão_versus_iteração"><span id="Recurs.C3.A3o_versus_itera.C3.A7.C3.A3o"></span>Recursão <i>versus</i> iteração</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=3" title="Editar secção: Recursão versus iteração" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=3" title="Editar código-fonte da secção: Recursão versus iteração"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>No exemplo do fatorial, a implementação iterativa tende a ser ligeiramente mais rápida na prática do que a implementação recursiva, uma vez que uma implementação recursiva precisa registrar o estado atual do <a href="/wiki/Processamento" class="mw-redirect" title="Processamento">processamento</a> de maneira que ela possa continuar de onde parou após a conclusão de cada nova execução subordinada do procedimento recursivo. Esta ação consome tempo e <a href="/wiki/Mem%C3%B3ria_(computador)" class="mw-redirect" title="Memória (computador)">memória</a>. (Note que a implementação de uma função fatorial para números naturais pequenos é mais rápida quando se usa uma <a href="/w/index.php?title=Tabela_de_busca&amp;action=edit&amp;redlink=1" class="new" title="Tabela de busca (página não existe)">tabela de busca</a>.) </p><p>Existem outros tipos de problemas cujas soluções são inerentemente recursivas, já que elas precisam manter registros de estados anteriores. Um exemplo é o percurso de uma árvore; outros exemplos incluem a <a href="/wiki/Fun%C3%A7%C3%A3o_de_Ackermann" title="Função de Ackermann">função de Ackermann</a> e algoritmos de <a href="/wiki/Divis%C3%A3o_e_conquista" title="Divisão e conquista">divisão e conquista</a>, tais como o <a href="/wiki/Quicksort" title="Quicksort">Quicksort</a>. Todos estes algoritmos podem ser implementados iterativamente com a ajuda de uma pilha, mas o uso de uma pilha, de certa forma, anula as vantagens das soluções iterativas. </p><p>Outra possível motivação para se escolher um algoritmo iterativo ao invés de um algoritmo recursivo é que nas linguagens de programação modernas o espaço disponível para o fluxo de controle é geralmente bem menor que o espaço disponível no <i><a href="/wiki/Heap" title="Heap">heap</a></i>, e algoritmos recursivos tendem a necessitar de mais espaço na pilha do que algoritmos iterativos. </p> <div class="mw-heading mw-heading2"><h2 id="Funções_recursivas"><span id="Fun.C3.A7.C3.B5es_recursivas"></span>Funções recursivas</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=4" title="Editar secção: Funções recursivas" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=4" title="Editar código-fonte da secção: Funções recursivas"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Funções cujos domínios podem ser definidos recursivamente (tal como o domínio dos <a href="/wiki/Axiomas_de_Peano" title="Axiomas de Peano">números naturais</a>) possuem frequentemente definições recursivas que seguem a definição recursiva do domínio (no caso dos naturais, definimos o comportamento da função com entrada 0, e para cada entrada positiva <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle sucessor(n)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>s</mi> <mi>u</mi> <mi>c</mi> <mi>e</mi> <mi>s</mi> <mi>s</mi> <mi>o</mi> <mi>r</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle sucessor(n)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/5510b28fe3670dc4c65768d06130d091367077d5" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:12.072ex; height:2.843ex;" alt="{\displaystyle sucessor(n)}"></span> definimos o comportamento da função recursiva a partir de seu comportamento com entrada <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle n}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>n</mi> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle n}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/a601995d55609f2d9f5e233e36fbe9ea26011b3b" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.395ex; height:1.676ex;" alt="{\displaystyle n}"></span>). </p><p>O exemplo clássico de uma função definida recursivamente é a seguinte definição da função <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle fatorial(n)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle fatorial(n)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/7934e8d5af3822a5e72774e30ddc58d3d087caae" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.454ex; height:2.843ex;" alt="{\displaystyle fatorial(n)}"></span>: </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle fatorial(n)={\begin{cases}1&amp;{\mbox{se }}n=0\\n\times fatorial(n-1)&amp;{\mbox{se }}n&gt;0\\\end{cases}}}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo stretchy="false">)</mo> <mo>=</mo> <mrow class="MJX-TeXAtom-ORD"> <mrow> <mo>{</mo> <mtable columnalign="left left" rowspacing=".2em" columnspacing="1em" displaystyle="false"> <mtr> <mtd> <mn>1</mn> </mtd> <mtd> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="false" scriptlevel="0"> <mtext>se&#xA0;</mtext> </mstyle> </mrow> <mi>n</mi> <mo>=</mo> <mn>0</mn> </mtd> </mtr> <mtr> <mtd> <mi>n</mi> <mo>&#x00D7;<!-- × --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mi>n</mi> <mo>&#x2212;<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mtd> <mtd> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="false" scriptlevel="0"> <mtext>se&#xA0;</mtext> </mstyle> </mrow> <mi>n</mi> <mo>&gt;</mo> <mn>0</mn> </mtd> </mtr> </mtable> <mo fence="true" stretchy="true" symmetric="true"></mo> </mrow> </mrow> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle fatorial(n)={\begin{cases}1&amp;{\mbox{se }}n=0\\n\times fatorial(n-1)&amp;{\mbox{se }}n&gt;0\\\end{cases}}}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/51e1f942684088226914948b900beeb6985fe181" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -2.505ex; width:47.246ex; height:6.176ex;" alt="{\displaystyle fatorial(n)={\begin{cases}1&amp;{\mbox{se }}n=0\\n\times fatorial(n-1)&amp;{\mbox{se }}n&gt;0\\\end{cases}}}"></span> </p><p>A partir desta definição, também chamada <a href="/wiki/Rela%C3%A7%C3%A3o_de_recorr%C3%AAncia" title="Relação de recorrência">relação de recorrência</a>, calculamos <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle fatorial(3)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>3</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle fatorial(3)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/0288c10aec3056a53e4a1d8ac0b61759cc6d0bd7" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:11.222ex; height:2.843ex;" alt="{\displaystyle fatorial(3)}"></span> da seguinte forma: </p><p><span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle fatorial(3)=3*fatorial(3-1)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>3</mn> <mo stretchy="false">)</mo> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>3</mn> <mo>&#x2212;<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle fatorial(3)=3*fatorial(3-1)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/914d6bec1d77c9f1ba57d0765c97f7c16be3b43f" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:32.902ex; height:2.843ex;" alt="{\displaystyle fatorial(3)=3*fatorial(3-1)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*fatorial(2)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>2</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*fatorial(2)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/901905c72d1d21016fcf2d48f7e6246d2da0be92" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:17.032ex; height:2.843ex;" alt="{\displaystyle =3*fatorial(2)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*2*fatorial(2-1)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>2</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>2</mn> <mo>&#x2212;<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*2*fatorial(2-1)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/dca08080dff54b887cb07ac194515c63566f8033" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:24.392ex; height:2.843ex;" alt="{\displaystyle =3*2*fatorial(2-1)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*2*fatorial(1)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>2</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>1</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*2*fatorial(1)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/09bea77d4c0954f7e66cc98944ac646e49cbfbd8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:20.389ex; height:2.843ex;" alt="{\displaystyle =3*2*fatorial(1)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*2*1*fatorial(1-1)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>2</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>1</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>1</mn> <mo>&#x2212;<!-- − --></mo> <mn>1</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*2*1*fatorial(1-1)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/df23ecbd8e9b2f89f03da57a77b2ee93f3543359" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:27.749ex; height:2.843ex;" alt="{\displaystyle =3*2*1*fatorial(1-1)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*2*1*fatorial(0)}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>2</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>1</mn> <mo>&#x2217;<!-- ∗ --></mo> <mi>f</mi> <mi>a</mi> <mi>t</mi> <mi>o</mi> <mi>r</mi> <mi>i</mi> <mi>a</mi> <mi>l</mi> <mo stretchy="false">(</mo> <mn>0</mn> <mo stretchy="false">)</mo> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*2*1*fatorial(0)}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/de02d8608b1e04b0bf4982440dec38ec07c01da8" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:23.746ex; height:2.843ex;" alt="{\displaystyle =3*2*1*fatorial(0)}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =3*2*1*1}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>3</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>2</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>1</mn> <mo>&#x2217;<!-- ∗ --></mo> <mn>1</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =3*2*1*1}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/51c3e5f6c7944cf0b47bcc0029825e42a9a6ebe3" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:13.687ex; height:2.176ex;" alt="{\displaystyle =3*2*1*1}"></span> <span class="mwe-math-element"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle =6}"> <semantics> <mrow class="MJX-TeXAtom-ORD"> <mstyle displaystyle="true" scriptlevel="0"> <mo>=</mo> <mn>6</mn> </mstyle> </mrow> <annotation encoding="application/x-tex">{\displaystyle =6}</annotation> </semantics> </math></span><img src="https://wikimedia.org/api/rest_v1/media/math/render/svg/b60487dfc0582ba7229ea03a151928814ae89a20" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:3.616ex; height:2.176ex;" alt="{\displaystyle =6}"></span> </p> <div class="mw-heading mw-heading2"><h2 id="Funções_recursivas_em_cauda"><span id="Fun.C3.A7.C3.B5es_recursivas_em_cauda"></span>Funções recursivas em cauda</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=5" title="Editar secção: Funções recursivas em cauda" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=5" title="Editar código-fonte da secção: Funções recursivas em cauda"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>As funções recursivas em cauda formam uma subclasse das funções recursivas, nas quais a chamada recursiva é a última instrução a ser executada. Por exemplo, a função a seguir, para localizar um valor em uma <a href="/wiki/Lista_ligada" title="Lista ligada">lista ligada</a> é recursiva em cauda, por que a última coisa que ela faz é invocar a si mesma: </p> <pre>registro noh dado: inteiro *proximo: registro noh fim_registro *acha_valor(*cabeca: registro noh, valor: inteiro): registro noh inicio se cabeca = NULO então acha_valor &lt;- NULO senão se cabeça.dado = valor então acha_valor &lt;- cabeca senão acha_valor &lt;- acha_valor(cabeca.proximo, valor) fim_se fim </pre> <p>Note que a função <code>fatorial</code> usada como exemplo na seção anterior <i>não</i> é recursiva em cauda, pois depois que ela recebe o resultado da chamada recursiva, ela deve multiplicar o resultado por <code>x</code> antes de retornar para o ponto em que ocorre a chamada. Funções com este tipo de comportamento são por vezes denominadas <i>crescentemente recursivas</i>. </p><p>É importante recordar que uma única função pode ter ambos os comportamentos, como ocorre na seguinte função que conta os <a href="/wiki/Inteiros" class="mw-redirect" title="Inteiros">inteiros</a> <a href="/wiki/%C3%8Dmpar" class="mw-redirect" title="Ímpar">ímpares</a> em uma lista ligada: </p> <pre>função conta_impares(*cabeca: registro noh): inteiro inicio se cabeca = NULO então conta_impares &lt;- 0 senão se (cabeca-&gt;dado MOD 2) = 1 então conta_impares &lt;- conta_impares(cabeca-&gt;proximo) + 1 /* recursão */ senão conta_impares &lt;- conta_impares(cabeca-&gt;proximo) /* recursão em cauda */ fim </pre> <p>Um bom <a href="/wiki/Compilador" title="Compilador">compilador</a> pode traduzir código recursivo em cauda para código iterativo. Com tal compilador, há vantagem em usar recursão em cauda para algumas funções. Definições recursivas algumas vezes são muito mais claras do que as iterativas. Contudo, chamadas recursivas são mais custosas do que iterações. Com recursão em cauda podemos ter código recursivo legível e uma implementação iterativa eficiente ao mesmo tempo. </p><p>O mais importante na recursão em cauda é que ao fazer uma chamada da função recursiva, os valores de retorno dela não necessitam ser conservados na pilha de chamada; quando a chamada recursiva retorna, ela vai diretamente para a posição de retorno previamente registrada. Assim, os compiladores que dão suporte à recursão em cauda economizam espaço e tempo. </p> <div class="mw-heading mw-heading2"><h2 id="Recursão_indireta"><span id="Recurs.C3.A3o_indireta"></span>Recursão indireta</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=6" title="Editar secção: Recursão indireta" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=6" title="Editar código-fonte da secção: Recursão indireta"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Funções podem ser recursivas (invocar a si próprias) indiretamente, fazendo isto através de outras funções: assim, "P" pode chamar "Q" que chama "R" e assim por diante, até que "P" seja novamente invocada. </p><p>Um exemplo é a <a href="/wiki/An%C3%A1lise_sint%C3%A1tica_(computa%C3%A7%C3%A3o)" title="Análise sintática (computação)">análise de expressões</a>. Suponha que você tem um analisador sintático para cada tipo de sub-expressão, e tenha uma expressão "3 + (2 * (4 + 4))". A função que processa expressões "+" chamaria uma segunda função que processaria expressões "*", que, por sua vez, chamaria novamente a primeira. </p> <div class="mw-heading mw-heading2"><h2 id="Recursão_aninhada"><span id="Recurs.C3.A3o_aninhada"></span>Recursão aninhada</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=7" title="Editar secção: Recursão aninhada" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=7" title="Editar código-fonte da secção: Recursão aninhada"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Uma chamada recursiva pode receber um argumento que inclui uma outra chamada recursiva. Um exemplo é a <a href="/wiki/Fun%C3%A7%C3%A3o_de_Ackermann" title="Função de Ackermann">função de Ackermann</a>, uma função que cresce de forma incrivelmente rápida. </p> <pre>função ack(n: inteiro, m: inteiro): inteiro inicio se n = 0 então ack &lt;- m + 1 senão se n &gt; 0 E m = 0 então ack &lt;- ack(n - 1, m) senão ack &lt;- ack(n - 1, ack(n, m - 1)) fim_se fim </pre> <p>Este é um exemplo de uma função que é muito mais fácil de escrever recursivamente: foi demonstrado que não existem definições equivalentes usando operadores aritméticos. Infelizmente uma computação recursiva direta desta função não é nem mesmo O(2n) em tempo ou espaço. </p><p>A recursão aninhada é um tipo especial de recursão dupla, onde uma definição recursiva refere-se a si própria mais de uma vez. </p> <div class="mw-heading mw-heading2"><h2 id="Ordem_de_chamada_de_funções"><span id="Ordem_de_chamada_de_fun.C3.A7.C3.B5es"></span>Ordem de chamada de funções</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=8" title="Editar secção: Ordem de chamada de funções" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=8" title="Editar código-fonte da secção: Ordem de chamada de funções"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>A ordem da chamada das funções podem mudar completamente a execução da função, veja o exemplo em <a href="/wiki/C_(linguagem_de_programa%C3%A7%C3%A3o)" title="C (linguagem de programação)">C</a>: </p> <div class="mw-heading mw-heading3"><h3 id="Função_1"><span id="Fun.C3.A7.C3.A3o_1"></span>Função 1</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=9" title="Editar secção: Função 1" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=9" title="Editar código-fonte da secção: Função 1"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">recursiveFunction</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">num</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="p">);</span><span class="w"> </span> <span class="w"> </span><span class="n">recursiveFunction</span><span class="p">(</span><span class="n">num</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span><span class="w"> </span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p><span class="mw-default-size" typeof="mw:File"><a href="/wiki/Ficheiro:RecursiveFunction1_execution.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/8/8a/RecursiveFunction1_execution.png" decoding="async" width="349" height="151" class="mw-file-element" data-file-width="349" data-file-height="151" /></a></span> </p> <div class="mw-heading mw-heading3"><h3 id="Função_2_com_linhas_trocadas"><span id="Fun.C3.A7.C3.A3o_2_com_linhas_trocadas"></span>Função 2 com linhas trocadas</h3><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=10" title="Editar secção: Função 2 com linhas trocadas" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=10" title="Editar código-fonte da secção: Função 2 com linhas trocadas"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">void</span><span class="w"> </span><span class="nf">recursiveFunction</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">num</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">num</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">5</span><span class="p">)</span> <span class="w"> </span><span class="p">{</span> <span class="w"> </span><span class="n">recursiveFunction</span><span class="p">(</span><span class="n">num</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> <span class="w"> </span><span class="n">printf</span><span class="p">(</span><span class="s">&quot;%d</span><span class="se">\n</span><span class="s">&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">num</span><span class="p">);</span> <span class="w"> </span><span class="p">}</span> <span class="p">}</span> </pre></div> <p><span class="mw-default-size" typeof="mw:File"><a href="/wiki/Ficheiro:RecursiveFunction2_execution.png" class="mw-file-description"><img src="//upload.wikimedia.org/wikipedia/commons/0/0d/RecursiveFunction2_execution.png" decoding="async" width="349" height="143" class="mw-file-element" data-file-width="349" data-file-height="143" /></a></span> </p> <div class="mw-heading mw-heading2"><h2 id="Função_que_retorna_a_soma_dos_números_de_n_até_0"><span id="Fun.C3.A7.C3.A3o_que_retorna_a_soma_dos_n.C3.BAmeros_de_n_at.C3.A9_0"></span>Função que retorna a soma dos números de n até 0</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=11" title="Editar secção: Função que retorna a soma dos números de n até 0" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=11" title="Editar código-fonte da secção: Função que retorna a soma dos números de n até 0"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="nf">soma</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">n</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">n</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">soma</span><span class="p">(</span><span class="n">n</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> <span class="w"> </span><span class="k">else</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Divisão_de_números_com_recursão"><span id="Divis.C3.A3o_de_n.C3.BAmeros_com_recurs.C3.A3o"></span>Divisão de números com recursão</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=12" title="Editar secção: Divisão de números com recursão" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=12" title="Editar código-fonte da secção: Divisão de números com recursão"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Função para dividir números utilizando somente soma e subtração: </p> <pre>Função divisaoRec(inteiro num, inteiro den) retorna Inteiro Inicio Se (num &lt; den) Então Função_Retorna(0) Senão Função_Retorna(divisaoRec(num-den, den) + 1) Fim_Se Fim </pre> <div class="mw-heading mw-heading2"><h2 id="Usando_vetores">Usando vetores</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=13" title="Editar secção: Usando vetores" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=13" title="Editar código-fonte da secção: Usando vetores"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <p>Funções recursivas também podem ser usadas para acessar elementos de vetores, no exemplo abaixo é mostrado uma função recursiva que retorna a soma dos elementos de um vetor. </p> <div class="mw-highlight mw-highlight-lang-c mw-content-ltr" dir="ltr"><pre><span></span><span class="kt">int</span><span class="w"> </span><span class="nf">somatoria</span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">vetor</span><span class="p">[],</span><span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">tamanho</span><span class="p">)</span> <span class="p">{</span> <span class="w"> </span><span class="k">if</span><span class="w"> </span><span class="p">(</span><span class="n">tamanho</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">)</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="n">vetor</span><span class="p">[</span><span class="n">tamanho</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">]</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">somatoria</span><span class="p">(</span><span class="n">vetor</span><span class="p">,</span><span class="w"> </span><span class="n">tamanho</span><span class="w"> </span><span class="o">-</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span> <span class="w"> </span><span class="k">else</span> <span class="w"> </span><span class="k">return</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span> <span class="p">}</span> </pre></div> <div class="mw-heading mw-heading2"><h2 id="Ver_também"><span id="Ver_tamb.C3.A9m"></span>Ver também</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=14" title="Editar secção: Ver também" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=14" title="Editar código-fonte da secção: Ver também"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a href="/wiki/Recursividade" title="Recursividade">Recursividade</a></li></ul> <div class="mw-heading mw-heading2"><h2 id="Ligações_externas"><span id="Liga.C3.A7.C3.B5es_externas"></span>Ligações externas</h2><span class="mw-editsection"><span class="mw-editsection-bracket">[</span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;veaction=edit&amp;section=15" title="Editar secção: Ligações externas" class="mw-editsection-visualeditor"><span>editar</span></a><span class="mw-editsection-divider"> | </span><a href="/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;action=edit&amp;section=15" title="Editar código-fonte da secção: Ligações externas"><span>editar código-fonte</span></a><span class="mw-editsection-bracket">]</span></span></div> <ul><li><a rel="nofollow" class="external text" href="http://webmasters.tol.pro.br/portal/index.php?option=com_remository&amp;Itemid=32&amp;func=fileinfo&amp;parent=category&amp;filecatid=443">Introdução a Ciência da Computação - Scheme - PUC/RIO</a></li> <li><a rel="nofollow" class="external text" href="http://www.dcc.ufla.br/~bruno/aulas/lp2/recursao.html">Recursão - UFLA - Lavras/MG</a></li> <li><a rel="nofollow" class="external text" href="http://www.dca.fee.unicamp.br/courses/EA072/lisp9596/node17.html">Funções Recursivas - UNICAMP</a></li> <li><a rel="nofollow" class="external text" href="http://www2.fundao.pro.br/articles.asp?cod=33">Fundão da Computação - Recursão - definição e tipos mais utilizados</a></li></ul> <!-- NewPP limit report Parsed by mw‐web.eqiad.main‐7c479b968‐7sdln Cached time: 20241114230710 Cache expiry: 2592000 Reduced expiry: false Complications: [show‐toc] CPU time usage: 0.130 seconds Real time usage: 0.561 seconds Preprocessor visited node count: 315/1000000 Post‐expand include size: 8066/2097152 bytes Template argument size: 15/2097152 bytes Highest expansion depth: 10/100 Expensive parser function count: 6/500 Unstrip recursion depth: 0/20 Unstrip post‐expand size: 16715/5000000 bytes Lua time usage: 0.071/10.000 seconds Lua memory usage: 875785/52428800 bytes Number of Wikibase entities loaded: 0/400 --> <!-- Transclusion expansion time report (%,ms,calls,template) 100.00% 109.056 1 Predefinição:Sem-fontes 100.00% 109.056 1 -total 91.11% 99.362 1 Predefinição:Ambox 5.23% 5.707 1 Predefinição:Se_vazio 4.96% 5.414 1 Predefinição:Encontre_fontes 2.62% 2.857 4 Predefinição:* --> <!-- Saved in parser cache with key ptwiki:pcache:idhash:730489-0!canonical and timestamp 20241114230710 and revision id 60539811. Rendering was triggered because: page-view --> </div><!--esi <esi:include src="/esitest-fa8a495983347898/content" /> --><noscript><img src="https://login.wikimedia.org/wiki/Special:CentralAutoLogin/start?type=1x1&amp;useformat=desktop" alt="" width="1" height="1" style="border: none; position: absolute;"></noscript> <div class="printfooter" data-nosnippet="">Obtida de "<a dir="ltr" href="https://pt.wikipedia.org/w/index.php?title=Recursividade_(ciência_da_computação)&amp;oldid=60539811">https://pt.wikipedia.org/w/index.php?title=Recursividade_(ciência_da_computação)&amp;oldid=60539811</a>"</div></div> <div id="catlinks" class="catlinks" data-mw="interface"><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="/wiki/Especial:Categorias" title="Especial:Categorias">Categorias</a>: <ul><li><a href="/wiki/Categoria:Estruturas_de_controle" title="Categoria:Estruturas de controle">Estruturas de controle</a></li><li><a href="/wiki/Categoria:L%C3%B3gica" title="Categoria:Lógica">Lógica</a></li></ul></div><div id="mw-hidden-catlinks" class="mw-hidden-catlinks mw-hidden-cats-hidden">Categorias ocultas: <ul><li><a href="/wiki/Categoria:!Artigos_que_carecem_de_fontes_desde_outubro_de_2016" title="Categoria:!Artigos que carecem de fontes desde outubro de 2016">!Artigos que carecem de fontes desde outubro de 2016</a></li><li><a href="/wiki/Categoria:!Artigos_que_carecem_de_fontes_sem_indica%C3%A7%C3%A3o_de_tema" title="Categoria:!Artigos que carecem de fontes sem indicação de tema">!Artigos que carecem de fontes sem indicação de tema</a></li></ul></div></div> </div> </main> </div> <div class="mw-footer-container"> <footer id="footer" class="mw-footer" > <ul id="footer-info"> <li id="footer-info-lastmod"> Esta página foi editada pela última vez às 23h43min de 27 de fevereiro de 2021.</li> <li id="footer-info-copyright">Este texto é disponibilizado nos termos da licença <a rel="nofollow" class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.pt">Atribuição-CompartilhaIgual 4.0 Internacional (CC BY-SA 4.0) da Creative Commons</a>; pode estar sujeito a condições adicionais. Para mais detalhes, consulte as <a class="external text" href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Terms_of_Use">condições de utilização</a>.</li> </ul> <ul id="footer-places"> <li id="footer-places-privacy"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Privacy_policy/pt-br">Política de privacidade</a></li> <li id="footer-places-about"><a href="/wiki/Wikip%C3%A9dia:Sobre">Sobre a Wikipédia</a></li> <li id="footer-places-disclaimers"><a href="/wiki/Wikip%C3%A9dia:Aviso_geral">Avisos gerais</a></li> <li id="footer-places-wm-codeofconduct"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Universal_Code_of_Conduct">Código de conduta</a></li> <li id="footer-places-developers"><a href="https://developer.wikimedia.org">Programadores</a></li> <li id="footer-places-statslink"><a href="https://stats.wikimedia.org/#/pt.wikipedia.org">Estatísticas</a></li> <li id="footer-places-cookiestatement"><a href="https://foundation.wikimedia.org/wiki/Special:MyLanguage/Policy:Cookie_statement">Declaração sobre ''cookies''</a></li> <li id="footer-places-mobileview"><a href="//pt.m.wikipedia.org/w/index.php?title=Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)&amp;mobileaction=toggle_view_mobile" class="noprint stopMobileRedirectToggle">Versão móvel</a></li> </ul> <ul id="footer-icons" class="noprint"> <li id="footer-copyrightico"><a href="https://wikimediafoundation.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/static/images/footer/wikimedia-button.svg" width="84" height="29" alt="Wikimedia Foundation" loading="lazy"></a></li> <li id="footer-poweredbyico"><a href="https://www.mediawiki.org/" class="cdx-button cdx-button--fake-button cdx-button--size-large cdx-button--fake-button--enabled"><img src="/w/resources/assets/poweredby_mediawiki.svg" alt="Powered by MediaWiki" width="88" height="31" loading="lazy"></a></li> </ul> </footer> </div> </div> </div> <div class="vector-settings" id="p-dock-bottom"> <ul></ul> </div><script>(RLQ=window.RLQ||[]).push(function(){mw.config.set({"wgHostname":"mw-web.codfw.main-5c59558b9d-xjsgq","wgBackendResponseTime":155,"wgPageParseReport":{"limitreport":{"cputime":"0.130","walltime":"0.561","ppvisitednodes":{"value":315,"limit":1000000},"postexpandincludesize":{"value":8066,"limit":2097152},"templateargumentsize":{"value":15,"limit":2097152},"expansiondepth":{"value":10,"limit":100},"expensivefunctioncount":{"value":6,"limit":500},"unstrip-depth":{"value":0,"limit":20},"unstrip-size":{"value":16715,"limit":5000000},"entityaccesscount":{"value":0,"limit":400},"timingprofile":["100.00% 109.056 1 Predefinição:Sem-fontes","100.00% 109.056 1 -total"," 91.11% 99.362 1 Predefinição:Ambox"," 5.23% 5.707 1 Predefinição:Se_vazio"," 4.96% 5.414 1 Predefinição:Encontre_fontes"," 2.62% 2.857 4 Predefinição:*"]},"scribunto":{"limitreport-timeusage":{"value":"0.071","limit":"10.000"},"limitreport-memusage":{"value":875785,"limit":52428800}},"cachereport":{"origin":"mw-web.eqiad.main-7c479b968-7sdln","timestamp":"20241114230710","ttl":2592000,"transientcontent":false}}});});</script> <script type="application/ld+json">{"@context":"https:\/\/schema.org","@type":"Article","name":"Recursividade (ci\u00eancia da computa\u00e7\u00e3o)","url":"https:\/\/pt.wikipedia.org\/wiki\/Recursividade_(ci%C3%AAncia_da_computa%C3%A7%C3%A3o)","sameAs":"http:\/\/www.wikidata.org\/entity\/Q264164","mainEntity":"http:\/\/www.wikidata.org\/entity\/Q264164","author":{"@type":"Organization","name":"Contribuidores dos projetos da Wikimedia"},"publisher":{"@type":"Organization","name":"Funda\u00e7\u00e3o Wikimedia, Inc.","logo":{"@type":"ImageObject","url":"https:\/\/www.wikimedia.org\/static\/images\/wmf-hor-googpub.png"}},"datePublished":"2006-12-19T00:13:00Z","dateModified":"2021-02-27T23:43:44Z"}</script> </body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10