que je travaille sur TopCoder récemment et je suis tombé sur cette question que je ne peux pas tout à fait faire comprendre. La question est de savoir F (n) = f (1) + f (2) + .... + f (n) pour une donnée "n" de telle sorte que f (n) est le plus grand diviseur impair de n. Il existe de nombreuses solutions triviales pour la réponse; Cependant, j'ai trouvé cette solution très intrigante.Somme des plus grands diviseurs impairs des premiers numéros de n
int compute(n) {
if(n==0) return 0;
long k = (n+1)/2;
return k*k + compute(n/2);
}
Cependant, je ne comprends pas tout à fait la façon d'obtenir une relation récursive d'un énoncé de problème comme celui-ci. Quelqu'un pourrait-il aider?
Est-ce que 'f' et' compute' sont la même chose ici? – AakashM
@Aakash: Non, ils ne le sont pas (si c'est correct), j'ai édité la question. –
vous avez une erreur: vous utilisez "N" et "n", s'il vous plaît corriger –