用2的幂次方表示任意整数--递归

题目如下:

代码如下:

#include <iostream>
#include <cmath>
using namespace std;
void out1(int a)
{
	int t1,t2;
	if(a==1)
	{
		cout<<"2(0)";
		return;
	}
	t1=int(log(a)/log(2));
	t2=a-pow(2,t1);
	cout<<"2";
	if(t1!=1)
	{
		cout<<"(";
		out1(t1);
		cout<<")";
	}
	if(t2!=0)
	{
		cout<<"+";
		out1(t2);
	}
}

main()
{
	int a;
	cin>>a;
	out1(a);
}

  运行结果如下:

还有一个:

原文地址:https://www.cnblogs.com/wanjinliu/p/11385452.html