[英]C++ Horner's Rule - Recursive Array Implementation
我已经使用 arrays 实现了霍纳方法,如下所示。
double hornerRule( const double x, const double a[], const int n ) {
double ans = *a;
if ( n > 0 ) { ans += x * hornerFunction( x, ++a, n - 1 ); }
return ans;
}
我对指针算法有点陌生,有几个问题:
std::vector
并避免传递数组大小n
。 这两种实现的优缺点是什么?使用新的 C++ 编译器,现代方法是使用 std::span 或 gsl::span 参数。 它包含指针和长度,可以很容易地从中构建子数组。
如果将 n 更改为模板参数,则取决于 n,它可以提高性能。 然后递归可以毫无问题地展开,编译器可以发挥它的优化魔法。
您也可以通过手动转换为循环来展开。
这一切都取决于你的目标。 如果 function 正常工作。 或者它对性能至关重要。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.