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) {

}

Enunciado: Problema 2 · Programació II UDL 2011

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 ›

Más ejercicios de Recursión: diseño, traza y diagramas de llamadas