1 import java.io.*; 2 3 /* 4 * 问题描述:将正整数N(N>=1)转换成二进制数 5 * 例 11 = 1* 2^3 + 0* 2^2 + 1* 2^1 + 1 6 */ 7 8 public class Decimal2Binary { 9 10 // 这里初始的"1"表示二进制1、0串中始终存在的最高位的1 11 private static String str = "1"; 12 13 // 递归地判断最后一位是1还是0,然后右移一位 14 private static void conv(int n) { 15 if (n == 1) // 已经达到最高位 16 return; 17 else if (n % 2 == 0) { // 当前2^0项是1还是0 18 conv(n / 2); // 先递归算2^1项, 19 str += "0"; // 再将2^0项的0、1值加在2^1项后面 20 } else { 21 conv(n / 2); 22 str += "1"; 23 } 24 } 25 26 public static String convert(int n){ 27 conv(n); 28 return str; 29 } 30 31 public static void main(String[] args) throws NumberFormatException, 32 IOException { 33 System.out.println(Decimal2Binary.convert(11)); 34 } 35 }