题目是看牛客上面的一个题:
看了别人的,都是用的循环判断。我使用的是递归(递归可能出现栈过深问题) 我用的string 接收,最好使用StringBuffer 来接受。毕竟string是一个常量,耗费比StringBuffer更大。 就是使用 m 对 n 求余得到一位数,然后在重复这个过程,直到为0 为止。
package practice; public class BinaryConversion { static String answer = ""; public static void binaryConversion(int number, int binary) { if (binary == 0 || binary == 1) { return; } if (number == 0) { return; } boolean flag = false; if (number < 0) { number = -number; flag = true; } String answer = exceptNumber(number, binary); if(flag) { answer += "-"; } System.out.println(new StringBuffer(answer).reverse().toString()); } public static String exceptNumber(int number, int binary) { char[] arr = {'A', 'B', 'C', 'D', 'E', 'F'}; if (number / binary > 0) { if (number % binary > 9) { answer = answer + arr[number % binary - 10]; } else { answer = answer + number % binary + " "; } number = number / binary; exceptNumber(number, binary); } else { answer += number; } return answer; } public static void main(String[] args) { binaryConversion(-4322, 13); System.out.println(Integer.toString(-4322, 13)); } }