Recursión en C
Un caso base y un problema más chico, en la pila en vez de en un bucle.
int factorial(int n) {
if (n <= 1) {
return 1;
}
return n * factorial(n - 1);
}
int sum_digits(int n) {
if (n < 10) {
return n;
}
return n % 10 + sum_digits(n / 10);
}
int ackermann_lite(int m, int n) {
if (m == 0) {
return n + 1;
}
return ackermann_lite(m - 1, 1);
}
Cómo funciona
- El caso base es lo que detiene la recursión.
- Cada llamada recibe su propia copia de las locales.
- La recursión profunda cuesta pila, así que C suele preferir el bucle.
Palabras clave y builtins usados aquí
ifintreturn
El intento, en números
- Líneas
- 20
- Caracteres a escribir
- 269
- Tokens
- 96
- Ritmo de tres estrellas
- 90 tpm
Al ritmo de tres estrellas de 90 tokens por minuto, este intento toma unos 64 segundos.
Paso 6 de 7 en Funciones; paso 20 de 35 en Fundamentos del lenguaje.