cmath库里有pow函数,这个函数在图形处理方面上经常用到,但是如果让你自己写这个函数,就不一定能写出来了,本期文章我就带大家写pow函数
源码:
double factorial(int n) {if (n == 0) return 1;double result = 1;for (int i = 1; i <= n; ++i) {result *= i;}return result;
}double explr(double x) {double sum = 1.0; // 级数从 1 开始 double term = 1.0; // 初始化第一个项 for (int n = 1; ; ++n) {term *= x / n; // 计算当前项 x^n / n! sum += term; // 累加到总和 // 当当前项的绝对值小于设定的精度阈值时停止 if (std::abs(term) < 1e-10) {break;}}return sum;
}
double pq(double x, int s) {double rt = 1; // 初始结果设为1 for (int i = 0; i < s; i++) {rt *= x; // 乘以 x, s 次 }return rt;
}double powt(double x, double y) {// 处理负幂的情况 if (y < 0) {x = 1 / x; // 将 x 取倒数 y = -y; // y 取绝对值 }// 如果 y 是整数 if (y == (int)y) {return pq(x, (int)y);}// 使用 exp 和 log 进行小数幂运算 return explr(y * log(x));
}
这次我是免费开源,机会可没这么多哦。