Menu
CoddyTech

Funciones recursivas, parte 1

Parte de la sección Lógica y flujo del Journey de GDScript de Coddy. Lección 57 de 78.

Una función recursiva es una función que se llama a sí misma. Cada llamada resuelve una versión más pequeña del problema, hasta que el problema es lo suficientemente pequeño como para responderlo directamente.

Esta función suma los números enteros desde 1 hasta n:

func sum_to_n(n: int) -> int:
	if n == 0: # caso base
		return 0
	return n + sum_to_n(n - 1) # paso recursivo

Tiene dos partes:

  • El caso base responde sin volver a llamar a la función: la suma hasta 0 es 0.
  • El paso recursivo llama a la función con un valor menor, n - 1, y construye su respuesta a partir del resultado.

sum_to_n(3) es 3 + sum_to_n(2), que es 3 + 2 + sum_to_n(1), que es 3 + 2 + 1 + sum_to_n(0). El caso base devuelve 0, y las llamadas en espera terminan una por una: el resultado es 6.

Cada paso recursivo debe acercarse al caso base. Sin un caso base, o con un paso como n + 1 que nunca lo alcanza, la función sigue llamándose a sí misma. Godot permite unas 1.000 llamadas anidadas y luego detiene el programa con un error.

challenge icon

Desafío

Fácil

El programa lee un número entero n (0 o más) y llama a count_down(n).

Debajo de _ready(), escribe la función recursiva count_down con un parámetro. Imprime todos los números desde su argumento hasta 0, uno por línea. No uses ningún bucle: la función imprime su número y se llama a sí misma con el siguiente número menor.

Para la entrada 3, la salida es:

3
2
1
0

Pruébalo tú mismo

extends Node

func _ready():
	var n := int(OS.read_string_from_stdin())
	count_down(n)

# Escribe la función recursiva count_down(n) a continuación
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Lógica y flujo

Practica por tu cuenta: Compilador de GDScript online