He estado trabajando recientemente en topcoder y me encontré con esta pregunta que no puedo entender. La pregunta es encontrar F (n) = f (1) + f (2) + .... + f (n) para una "n" dada tal que f (n) es el mayor divisor impar para n. Hay muchas soluciones triviales para la respuesta; sin embargo, encontré esta solución muy intrigante.Suma de los mayores divisores impares de los primeros n números
int compute(n) {
if(n==0) return 0;
long k = (n+1)/2;
return k*k + compute(n/2);
}
Sin embargo, no entiendo muy bien cómo obtener una relación recursiva de un enunciado de problema como este. ¿Alguien podría ayudarme?
¿Son 'f' y' calcular' lo mismo aquí? – AakashM
@Aakash: No, no lo están (si es para ser correcto), he editado la pregunta. –
tiene un error tipográfico: está utilizando "N" y "n", por favor, corrija –