2017-05-30 1 views
2

私のクラスの1つにLab演習をコーディングしています。Java再帰10進数から2進数への関数後方への印刷

public class convert { 
    public static void decToBin(int num) { 
     if (num > 0) { 
      decToBin(num /= 2); 
      System.out.print(num % 2); 
     } 
    } 

    public static void main(String[] args) { 
     decToBin(50); 
    } 
} 
:質問は、コンストラクタ「パブリック静的ボイドdecToBin(int型NUM){}」

現在のコードを使用し 「を2進数を印刷し、2進数に小数を変換再帰関数を書く」を尋ねます

出力:残念ながら 011001

、プログラムが呼び出されたすべてのメソッドをアンパックし、それが逆方向に進で私の番号を出力しますが、それらを終了します。 私は太陽の下ですべてを試しましたが、何も私のために働きません。

誰かが問題がどこにあるか教えていただけたら、私にヒントなどを教えてください。 私はこのコードについて二番目の意見が必要です。 ありがとうございました!

+0

関連していませんが、1に間違った値を出力しませんか? – CBredlow

答えて

2

答えをプリントアウトする前に2で割っています。これは結果を乱してしまいます。修正された関数は次のようになります。

public static void decToBin(int num) { 
    if (num > 0) { 
     decToBin(num/2); 
     System.out.print(num % 2); 
    } 
} 

次に、順序を逆にすると、行を反転できます。

public static void decToBin(int num) { 
    if (num > 0) { 
     System.out.print(num % 2); 
     decToBin(num/2); 
    } 
} 
+0

ありがとうKevin、 '/ ='が問題だったことが判明し、必要なものはすべて '/'に変更されました – BigChemist

0

まず第一に、あなたはnum /= 2上の関数を呼び出す前num % 2を印刷する必要があります。 バイナリ番号を取得するための出力は、バイナリに変換するときに右から左に番号を入力する必要があるためです。

関連する問題