2013-01-11 3 views
5

J'essaie de compter le nombre d'Ones dans la représentation binaire d'un entier. Je dois le faire de manière récursive. Je pense que ma logique est correcte mais je continue à avoir un débordement de pile. Je suis le jour 2 dépannage. Voici mon code:Dépassement de pile pour le comptage récursif d'éléments en Java

static int CountRecursive(int n) { 
    int sum = 0; 
    if (n >= 0) { 
     if (n%2 == 1) { 
      sum ++; 
     } sum += CountRecursive(n/2); 
    } return sum; 
} 

Ma logique est basée sur ces informations: « Le mécanisme standard pour la conversion de décimal en binaire est de diviser à plusieurs reprises le nombre décimal par 2 et, à chaque division, sortie le reste (0 ou 1)."

+0

Notez cependant que vous devez modifier votre solution encore plus à travailler pour les entiers négatifs aussi. – biziclop

Répondre

11

Supprimez les équivalents dans if. 0 divisé par 2 est toujours zéro - vous allez dans la récursivité infinie.

je veux dire faire celui-ci:

if (n >= 0)

comparaison stricte i.e.:

if (n > 0)

+0

C'était tout! Merci! – AntBite

Questions connexes