Problema 2 · Programació II UDL 2011
Tema: Recursión: diseño, traza y diagramas de llamadas · Del examen Examen Primer Parcial (Curso 2011/2012) (2011)
Enunciado
Problema 2. Función recursiva numberOfDigits
Diseñe e implemente una función recursiva que reciba un número natural (entero mayor o igual que cero) y devuelva el número total de dígitos que posee. Por ejemplo: 0 tiene 1 dígito; 23 tiene 2 dígitos; 2430 tiene 4 dígitos.
public int numberOfDigits(int n) {
// ?
}
Nota: Es obligatoria la justificación del diseño (mediante casos base, hipótesis inductiva o razonamiento matemático/gráfico); el código sin justificar no se considerará válido.
public int numberOfDigits(int n) {
}

Solución
Según los criterios oficiales de corrección
Justificación del diseño (mediante casos base, hipótesis inductiva o razonamiento matemático/gráfico)
Solución: Caso base: Un número con un único dígito decimal cumple 0 <= n < 10. Su cantidad de dígitos es siempre 1. Paso inductivo / caso recursivo: Si n >= 10, podemos descomponer el número eliminando su último dígito mediante la división entera n / 10. Como n / 10 < n, nos acercamos estrictamente al caso base. La cantidad total de dígitos será 1 + numberOfDigits(n / 10).
Implementación de la función recursiva numberOfDigits(int n)
Solución: ```java if (n < 10) { return 1; } else { return 1 + numberOfDigits(n / 10); } ``` ```java if (n < 10) return 1; return 1 + numberOfDigits(n / 10); ``` ```java return (n < 10) ? 1 : 1 + numberOfDigits(n / 10); ```
La explicación paso a paso, hecha con IA, es Premium. Premium
Resuélvelo aquí mismo: corrección automática, pistas y solución paso a paso.
‹ Problema 1 · 2011 · Problema 3 · 2011 ›