2. 撰寫演算法以計算在給定各系數和變數x的值時的多項式fn(x)的值,要求時間盡可能少。 (難度等級2-3*)
(提示:可將各系數存盤在陣列A中;
另外,乘法運算的時間是加法運算時間的數倍)
fn(x)= anxn +an-1xn-1+an-1xn-2+….. a2x2+a1x+a0
uj5u.com熱心網友回復:
我是復制“尋開心”在別處同一道題的回答:a0 + a1*x^1. + a2 * x^2 + .... + an*x^n
最快的演算法是:
a0 + x*(a1 + x*(a2+ x*(......+x*(an)))))))
寫成函式就是:
float poly( float a[], int n, float x) {
float result = 0;
for ( int v=n; v>=0; v--)
result = a[v] + x*result;
return result;
}
int main () {
float a[100] = {1, 2, 3}; // 用來放系數ai的,表示 1 + 2*x + 3*x*x
int n=2; // 多項式最高項是平方專案
float x=3;
float ans = poly(a, n, x);
printf("%f", ans);
return 0;
};
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/117345.html
標籤:C++ 語言
下一篇:學渣求助
