如何将求幂运算的递归转换为循环?
如何将求幂运算的递归转换为循环? x的n次方. 递归:
程序代码:long pow1(long x, unsigned n)
{
if (n == 0)
return 1;
else if (n % 2 == 1)
return pow1(x*x, n/2) * x;
else if (n % 2 == 0)
return pow1(x*x, n/2);
}将以上程序转换为循环:
程序代码:long pow2(long x, unsigned n)
{
int t[100] = {0}, i = 0;
if (n == 0)
return 1;
while (n > 1) {
if (n % 2 == 1)
t[i++] = x;
x *= x;
n /= 2;
}
for (i = 0; t[i]; i++)
x *= t[i];
return x;
}上面是我写的转换程序, 测试结果是没有问题, 但是有没有其它更好的算法? 算法分析不太会, 不知道转换后的效率是不是差不多, 烦请指导, 谢谢. 









