问题描述:
分治的方法求an
算法分析:
如果 n 是偶数,可以分为 (an/2)*(an/2) 算法复杂度基本降低一半
如果 n 是奇数,可以分为 (an/2)*(an/2)*a 算法复杂度也基本降低一半
如果 n == 1 ,则直接返回 a
代码实现:
#include<math.h>
int calc( int a, int n)
{
if(n== 1)
return a;
if(n% 2== 0)
return pow(calc(a,n/ 2), 2);
return pow(calc(a,(n- 1)/ 2), 2)*a;
}
int main()
{
puts( " To calculator a^n ,Please input a and n: ");
int a,n;
scanf( " %d%d ",&a,&n);
a=calc(a,n);
printf( " %d ",a);
}