En esta página, aprenderá cómo evitar que la recursión continúe indefinidamente.
Parecía tener sentido reemplazar todas las secuencias de comandos de árbol numeradas similares con una única secuencia de comandos recursiva con la misma estructura:
...
→
Pero no funcionó:
árbol, nivel 9 tamaño 50
, pero miren lo que ocurrió. ¿Qué está yendo mal?
árbol
, el objeto dibuja ramas izquierdas cada vez más pequeñas hasta que parece estar girando en un solo lugar. Nunca dibuja una rama derecha para terminar el árbol en el que está trabajando.
árbol 1
es diferente a los demás; simplemente dibuja una línea, sin ramas, y vuelve a poner el objeto donde empezó.
árbol 1
y la figura que dibuja.árbol
recursivo tiene que hacer algo diferente en el nivel más bajo!
Esta versión diferente para el nivel más bajo de un script recursivo se denomina caso base (base case).
árbol
recursivo para que incluya un caso base para evitar que el programa se llame a sí mismo para siempre.On Unidad 3 Laboratorio 1 Página 3: Usar abstracción para anidar triangulos, solo dibujabas el triángulo anidado
si tamaño > 9. Esa es una de las formas de impedir que la recursividad continue para siempre. Haz clic aquí para ver una pista más detallada.
nivel de árbol: 9 tamaño: 50
. Si ahora funciona correctamente, deberías obtener un resultado como este.Los programas recursivos se llaman a sí mismos. Para que se detengan, debe haber algún caso especial en el que no se llamen a sí mismos. Lo llamamos el caso base, una versión más simple del programa que no llama al bloque en sí mismo.
Por lo general, hay un condicional con dos casos: un caso base para el nivel más bajo que detiene la recurrencia para siempre y un caso recursivo que llama al propio programa una y otra vez en niveles inferiores hasta que llega al caso base.
Cuando un bloque sigue llamándose a sí mismo recursivamente para siempre (como cuando el objeto estaba dando vueltas en un solo lugar), eso es un error, y decimos que el programa está atascado en un bucle infinito.
árbol
recursivo. Identifica el caso base y dialoguen sobre cómo funciona la recursividad en este programa.árbol
se ejecuta en un tiempo razonable o irrazonable? Reflexiona un poco sobre esto; podrías probar a medir el tiempo que toma el programa para los niveles del 8 al 12, o podrías crear una variable global contar y agregarla primero al bloque árbol
para registrar el número de veces que se llama al procedimiento para árboles en diferentes niveles.