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 }