题目要求
题目解析
典型的递归问题。tran是递归函数,计算最接近m的2的幂次i,并递归调用tran(i),直到幂次为0或者1。注意函数返回时去掉第一个+号。
#include <bits/stdc++.h>
using namespace std;
string trans(int n)
{
string s="";
int m = n;
while (m != 0)
{
int x=m;
int i;
for (i=0; (x=x>>1)>0; i++);
if (i==0)
s += "+2(0)";
else if (i==1)
s += "+2";
else
s += "+2("+trans(i)+")";
m -= pow(2,i);
}
return s.substr(1);
}
int main()
{
int n;
cin >> n;
cout << trans(n);
return 0;
}