c语言 用迭代 求x的n次方 吧

来源:百度知道 编辑:UC知道 时间:2024/06/23 12:29:37
要迭代iterasive的算法
我会去测时间的
请不要再给我提供递归和最普通的算法了 我只要迭代的

b^n = (b ^ (n / 2) ^ 2) (n为偶数)
b^n = b * b ^ (n - 1) (n为奇数)

恩,也不难
给个思路
初始res=m, 幂数x=1;
每次平方,x+=x;
找到小于n的最大x
对于剩下的n-x,运用同样的方法(注意写成函数,此方法非递归实现,复杂度Lgn)

double nExponent(double x, int n){
int iter = 1;
while(n != 0){
iter = iter*x;
n --;
}
return iter;
}

int diedai(double ,int );
int main()
{
int a=4;
double b=2;
double c;
c=diedai(b,a);
printf("result is : %d \n",c);
system("PAUSE");
return c;
}

int diedai(double x, int n)
{

int i;
double y;
i=n;
y=x;
if(i==0)
diedai(y,i)=1;
else
diedai(y,i)=y * diedai(y,i-1);
return int(diedai(y,i));
}