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串中始终存在的最高位的111 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还是018 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 }