2013-01-11 12 views
5

में तत्वों की रिकर्सिव गिनती के लिए ओवरकफ़्लो स्टैक करें, मैं एक पूर्णांक के बाइनरी प्रतिनिधित्व में ऑनस की संख्या गिनने की कोशिश कर रहा हूं। मुझे इसे बार-बार करने की ज़रूरत है। मुझे लगता है कि मेरा तर्क सही है लेकिन मुझे एक ढेर ओवरफ्लो मिलना जारी है। मैं दिन 2 समस्या निवारण पर हूँ।जावा

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

मेरे तर्क इस जानकारी पर आधारित है:: यहाँ मेरी कोड है "दशमलव से बाइनरी में कनवर्ट करने के लिए मानक तंत्र बार-बार 2 से दशमलव संख्या विभाजित करके प्रत्येक विभाजन में, करने के लिए है, उत्पादन शेष (0 या 1)। "

+0

नोट हालांकि है कि आप अपने समाधान tweak करने के लिए है और भी अधिक नकारात्मक पूर्णांक के लिए भी काम करने के लिए। – biziclop

उत्तर

11

अगर में बराबर निकालें। 0 से विभाजित 2 अभी भी शून्य है - आप अनंत रिकर्सन में जाते हैं।

मेरा मतलब है इस एक बनाने:

if (n >= 0)

सख्त तुलना अर्थात:

if (n > 0)

+0

वह था! धन्यवाद! – AntBite