如何将求幂运算的递归转换为循环?
如何将求幂运算的递归转换为循环? 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; }上面是我写的转换程序, 测试结果是没有问题, 但是有没有其它更好的算法? 算法分析不太会, 不知道转换后的效率是不是差不多, 烦请指导, 谢谢.