[英]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.