与if语句相比,使用大幂函数时Math.Pow()是否较慢

本文关键字:Pow Math 是否 函数 语句 if | 更新日期: 2023-09-27 18:28:34

我现在正在学习C#,所以今天我打印了这个级数的第一个n-count:An=1/n*(-1)^n;所以它基本上是-1 1/2-1/3 1/4…我想知道是使用if语句if(n%2 == 0)更好,还是使用更优雅的Math.Pow()方法更好?当幂是一个大整数时,即使对于数字1,Math.Pow()也慢吗?

与if语句相比,使用大幂函数时Math.Pow()是否较慢

我会使用三元运算符以这种方式进行编码:

double sum = 0.0;
for (int i = 1; i <= n; ++i) {
   sum += ((i % 2) == 0) ? +1.0 : -1.0)/i;
}

我也喜欢评论中循环展开的想法:

double sum = 0.0;
for (int i = 1; i <= n; i += 2) {
   sum -= 1.0/i;
}
for (int i = 2; i <= n; i += 2) {
   sum += 1.0/i;
}

这里有另一种方法:

int sign = -1;
for(int n = 1; n <= N; n++)
{
    double a_n = (double)sign/n;
    sign *= -1;
}