题目:
思路:用两次递归:
1,递归分解2的幂次方
2,递归输出表达式
import java.util.Scanner;
public class Main{
public static void main(String[] args) {
Scanner in=new Scanner(System.in);
int n=in.nextInt();
GetMi(n);
}
public static void GetMi(int n) {
int ans=0;
if(n==1) {
System.out.print("2(0)");
return;
}
if(n==2) {
System.out.print("2");
return;
}
for(int i=0;i<15;i++) {
//当这个数介于2^i与2^i+1之间是
if(n>=Math.pow(2, i)&&n<Math.pow(2, i+1)) {
ans=i;
break;
}
}
if(ans==0) {
System.out.print("2(0)");
}else if(ans==1) {
System.out.print("2");
}else {
System.out.print("2(");
GetMi(ans);
System.out.print(")");
}
if((int)(n-Math.pow(2, ans))!=0) {
System.out.print("+");
GetMi((int)(n-Math.pow(2, ans)));//递归剩下的
}
}
}