Недавно я работал над topcoder, и я наткнулся на этот вопрос, который я не могу понять. Вопрос заключается в том, чтобы найти F (n) = f (1) + f (2) + .... + f (n) для данного «n», для которого f (n) является наибольшим нечетным делителем для n. Существует множество тривиальных решений для ответа; однако я нашел это решение очень интригующим.Сумма наибольших нечетных делителей первых n чисел
int compute(n) {
if(n==0) return 0;
long k = (n+1)/2;
return k*k + compute(n/2);
}
Однако я не совсем понимаю, как получить рекурсивное отношение из постановщика задачи, такого как это. Может ли кто-нибудь помочь?
Есть ли 'f' и' compute' то же самое здесь? – AakashM
@Aakash: Нет, они не (если это будет правильно), я отредактировал вопрос. –
у вас есть опечатка: вы используете «N» и «n», пожалуйста, исправьте –