2013-01-11 13 views
5

私は整数のバイナリ表現でOnesの数を数えようとしています。私はこれを再帰的に行う必要があります。私の論理は正しいと思いますが、スタックのオーバーフローが続きます。私は2日目のトラブルシューティングをしています。 、「バイナリに10進数から変換するための標準的なメカニズムが繰り返し2進数を分割し、各分割にすることである出力剰余(0または:Javaの要素の再帰的なカウントのためのスタックオーバーフロー

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

私のロジックは、この情報に基づいている:ここで私のコードです1)。 "

+0

注:

if (n >= 0)

、厳密な比較すなわち。 – biziclop

答えて

11

ifでequalsを削除します。 0を2で割った値はまだゼロです。あなたは無限回帰に入ります。

私はこの1つ作る意味:あなたはあまりにも負の整数のために働くためにも、より多くのソリューションを微調整するために持っているものの

if (n > 0)

+0

それはそれでした!ありがとう! – AntBite

関連する問題