2013-01-11 13 views
5

Próbuję policzyć liczbę jedynek w binarnej reprezentacji liczby całkowitej. Muszę to zrobić rekurencyjnie. Myślę, że moja logika jest poprawna, ale nadal otrzymuję przepełnienie stosu. Zajmuję się rozwiązywaniem problemów drugiego dnia. Oto mój kod:przepełnienie stosu dla rekurencyjnego liczby elementów w java

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

Moja logika jest oparte na tej informacji: „Standardowy mechanizm konwersji z przecinku do binarnych jest wielokrotnie podzielić liczbę dziesiętną przez 2 i, w każdym dziale, moc pozostała (0 lub 1). "

+0

Zauważ jednak, że trzeba dostosować swoje rozwiązanie jeszcze bardziej do pracy dla ujemnych liczb całkowitych zbyt. – biziclop

Odpowiedz

11

Usuń równe w if. 0 podzielone przez 2 to nadal zero - wchodzisz w nieskończoną rekursję.

znaczy uczynić ten jeden:

if (n >= 0)

ścisłego porównania tj:

if (n > 0)

+0

To było to! Dzięki! – AntBite

Powiązane problemy