Los bucles recursivos

Un bucle recursivo (n), contenido en un bucle pariente (x), permite de ejecutar el bucle (x) una nueva vez, transmitiendo automáticamente los parámetros necesarios. Entonces, dentro del bucle (x), llamamos este mismo bucle (eso se llama la recursividad) con otros argumentos. Este proceso se repite mientras que el bucle llamado sigue volviendo resultados.

<BOUCLEx(TABLA){id_parent}>
  ...
  <BOUCLEn(BOUCLEx) />
  ...
</BOUCLEx>

Cuando un sitio posee numerosas subsecciones, o numerosos mensajes de foro, estos bucles recursivos están utilizados seguido. Se pueden también fácilmente mostrar elementos idénticos jerarquizados.

Ejemplo

De esta manera vamos a mostrar la lista completa de secciones del sitio. Para eso, hacemos un primer bucle sobre las secciones, con un criterio para seleccionar las secciones hijas de la secciones en curso: {id_parent} (identificador del pariente). Ordenamos también por numero (un orden dado a las secciones para mostrar las voluntariamente en un cierto orden), luego por titulo de sección.

<B_secs>
  <ul>
  <BOUCLE_secs(RUBRIQUES){id_parent}{par num titre, titre}>
    <li>#TITRE
	<BOUCLE_sub_secs(BOUCLE_rubs) />
    </li>
  </BOUCLE_secs>
  </ul>
</B_secs>

Al primer pasaje en el bucle, id_parent listara las secciones a la raíz del sitio. Para estas secciones, el campo SQL id_parent vale cero. Una vez la primer sección mostrada, el bucle recursivo esta llamado. SPIP llama de nuevo el bucle «_secs». Esta vez la selección {id_parent} no es la misma porque este criterio lista las secciones hijas de la sección en curso. Si hay sub-secciones, la primera esta mostrada. Y en seguida, y una nueva vez, pero en esta sub-sección, el bucle «_secs» esta ejecutado. Mientras que hay sub-secciones a mostrar, este proceso recursivo reempieza.

Resultado:

<ul>
<li>en
	<ul>
		<li>Introducción</li>
		<li>Los esqueletos
			<ul>
				<li>Bucles</li>
			</ul>
		</li>
		<li>Extender SPIP
			<ul>
				<li>Introducción</li>
				<li>Pipelines</li>
				...
			</ul>
		</li>
		...
	</ul>
</li>
<li>fr
	<ul>
		<li>Introduction</li>
		<li>Écriture des squelettes
			<ul>
				<li>Boucles</li>
				<li>Balises</li>
				<li>Critères de boucles</li>
				...
			</ul>
		</li>
		...
	</ul>
</li>
</ul>

Entender los principios de la recursividad en programación puede ser difícil. Si lo que fue explicado aquí le deja perplejo, lee el artículo dedicado de SPIP.net que explica eso con otras palabras:
http://www.spip.net/es_article914.html

Autor o autora Sylvain Lesage Publicado el: Actualizado: 12/03/23

Traducciones: English, Español, français