参考代码
int solve(int x,int n) //求x^n
{
int fv;
if (n==1)
return x;
if (n%2==0)
fv=solve(x,n/2);
return fv*fv;
}
else
{
fv=solve(x,(n-1)/2);
return fv*fv*x;
}
}
void main()
{
int x=2;
printf("求解结果:\n");
for (int i=1;i<=10;i++)
printf(" %g^%d=%g\n",x,i,solve(x,i));
}
分治法:将一个规模为n的问题分解为k个规模较小的子问题,这些子问题相互独立且与原问题相同,然后递归地解这些子问题,最后将各个子问题的解合并得到原问题的解。