ProcesadorNumero PROBLEMA 1 (Laboratorio N°1) contarDigitosPares(n:entero) retorna la cantidad de dígitos pares de n. Implementarlo recursivamente. <<Consultas>> estaDigito ( n:entero, d:entero ) : booleano sumaDigitos ( n:entero ) : entero sumaP ( n:entero ) : entero contarDigitos(n:entero): entero esSumaMayor(n,m:entero): booleano contarDigitosPares(n:entero): entero PROBLEMA 2 ( Parcial 2016) Dada una secuencia S de números naturales (S= a1 a2 a3...ak bk…b3 b2 b1) de longitud n ( n=2k y n >= 0 ), se define Reflejo Mayor al número ai tal que ai=bi y no existe j tal que aj=bj y ai<aj, , 0<i<=k, 0<j<=k. Si no existe i, entonces Reflejo Mayor es -1. Ejemplo: • N=6 S = 4 56 7 7 56 3 Reflejo Mayor= 56 • N=2 S= 3 45 Reflejo Mayor= -1 • N=4 S= 22 3 3 45 Reflejo Mayor= 3 Escriba un método recursivo para determinar cuál es el Reflejo Mayor de una secuencia ingresada por teclado. Recuerden escribir SIEMPRE el planteo en las soluciones recursivas, en forma de que la implementación se vea reflejada en el mismo.
N’ es N sin su último dígito. PROBLEMA 1 contarDigitosPares(n:entero) retorna la cantidad de dígitos pares de n. Implementarlo recursivamente. PLANTEO ContarDP de N CASO BASE: Si N es menor a 10, ContarDP de N es 1 si N es par sino es 0. CASO RECURSIVO: Si N es mayor o igual a 10, ContarDP de N es ContarDP de N’ más 1 si N es par sino es ContarDP de N’. N’ es N sin su último dígito. public static int contarDigitosPares (int n) { int pares; if (n < 10) if (n % 2 == 0) pares = 1; else pares=0; else if (n % 2 == 0) pares = contarDigitosPares (n/10) + 1; else pares = contarDigitosPares (n/10) ; return (pares); }
S’ es S sin su primer y último elementos. PROBLEMA 2 PLANTEO ReflejoMayor de S CASO BASE: Si secuencia vacía, ReflejoMayor de S es -1 . CASO RECURSIVO: Si secuencia no es vacía, ReflejoMayor de S es ReflejoMayor de S’ si el primer y último elemento de S son distintos sino es el número más grande entre el primer elemento de S y el ReflejoMayor de S’ . S’ es S sin su primer y último elementos. public static int ReflejoMayor (int n) { int RM, pri, ult; if (n == 0) RM = -1; else { pri = ES.leerEntero(); RM = ReflejoMayor (n - 2); ult = ES.leerEntero(); if (pri == ult) && (pri > RM) RM = pri; } return (RM);