在以下功能中:
long power(int x, int n)
{
if (n == 0)
return 1;
if (n % 2 == 0)
return power(x, n/2) * power(x, n/2);
return x * power(x, n-1);
}
这当然应该用不同的方式写成,如下:
long power(int x, int n)
{
if (n == 0)
return 1;
if (n % 2 == 0) {
long res = power(x, n/2);
return res * res;
}
return x * power(x, n-1);
}
然而,像gcc这样的好编译器是否能够识别输出功率函数仅依赖于它的参数,优化双函数调用? 如果没有,编译器删除' double'的近似边界在哪里?码?