2017-05-30 103 views
2

我正在爲我的一個類編寫實驗練習。這個問題問到「寫一個遞歸函數轉換爲十進制數轉換成二進制數,打印二進制數」 使用構造「公共靜態無效decToBin(INT NUM){}」Java遞歸十進制到二進制函數向後打印

當前代碼:

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); 
    } 
} 

輸出: 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。你需要反向輸出得到二進制數,因爲當轉換爲二進制時,你從右到左鍵入數字。