題目給了提示用遞歸,遞歸确實好了解一些
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
scanner.close();
System.out.println(dfs(n));
}
private static String dfs(int n){
StringBuilder sBuilder = new StringBuilder();
String bin = Integer.toBinaryString(n);
int pow = bin.length() - 1;
int index = 0;
while (pow >= 0){
if(bin.charAt(index) == '1') {
sBuilder.append("+");
if (pow == 0) {
sBuilder.append("2(0)");
} else if (pow == 1) {
sBuilder.append("2");
} else {
sBuilder.append(String.format("2(%s)", dfs(pow)));
}
}
pow--;
index++;
}
return sBuilder.toString().substring(1);
}
}