2017-04-09 10 views
0

私は宿題の解決のためにほとんど解決策を得ていると思います。2つのバイナリ数値を再帰的に追加します(ビット演算なし)。 Java宿題

これは201 CSクラス用です。今は論理を正しく取りたいだけです。現在のところ、意図したとおりに動作しませんが、それは近いです。

.toBinary、ビット単位、またはその他のものは使用しません。私たちもstringBuilderを教えていないので、使用しないでください。

System.out.println()があります。コンソールを下から上に読んだ場合に正しい答えを提供する方法の中で。正しい答えは、私が理解するトラブルを抱えている11010101110.

とき

public static void main(String[] args) { 

     System.out.println(addBin(1100111011,1101110011)); 
} 

public static String addBin(int num1,int num2){ 

    String result = ""; 

    if(num1 > 0 || num2 > 0){ 

     int part1 = num1%10, part2 = num2%10; 
     int rem1 = num1/10, rem2 = num2/10; 

     result += Integer.toString((part1 + part2)%2); 

     //System.out.println(result); 

     int carry = (part1 + part2) /2; 

     addBin(rem1 + carry, rem2); 

     return result; 

    } 

    return result; 

} 

ので、この例では、出力

0 
1 
1 
1 
0 
1 
0 
1 
0 
1 
1 
0 

で1100111011と1101110011を追加する方法を適切に「ポップ」に " 「結果」部分を適切に処理します。おそらくこの問題の文脈の中で、このプロセスを理解するのを手伝ってください。

ありがとうございます!

+0

あなたは 'System.out.println(addBin(0b1100111011,0b1101110011));'? –

+0

私はしません。これらは、ユーザーの入力から表面的に受け取られる「バイナリ」番号です。同様に、私はスキャナーでその数字をどこかから得ることができるはずです。 –

+0

'addBin'は値を返します。その戻り値を使用する必要があります。 'result'変数を作成しないで、' addBin(rem1 + carry、rem2) 'と' Integer.toString((part1 + part2)%2) 'の2つの値を考えてみてください。 – Ryan

答えて

0

出力からわかるように、逆の順序で正しい結果が得られていますが、現在計算されている結果に古い結果が追加されていません。

if条件の内部では、addBin()関数を呼び出していますが、どこに与えても結果は使用していません。ただ、次のようにその行を変更:

あなたが後方方向に結果を得ることはありませんように、実効電流の答えの前に、すべての結果を追加する必要があり
result = addBin(rem1 + carry, rem2)+result; 

。お役に立てれば。

関連する問題