痛心!一題可見餘之弱雞
阿新 • • 發佈:2018-12-09
1.計算下列級數的和
直到。
這道題是老生長談了,首先我的第一反應就是找規律,找分子分母的跟據該項的順序變化規律,然後演算法就是在迭代的過程中分別變化分子分母然後相除,把分子分母的計算給分開了。
#include<stdio.h> double S(int x) { int n = 1; double s = 1; //結果 double a = x; //每一項的分子 double b = 1; //每一項的分母 for (int i = 1; i <= n; i++) { double k = a / b; //每一項 s += k; if (k - 1e-6 < 0) break; a *= x; b *= i; n++; } return s; }
其實這個可以找到其中的數學關係,根據遞迴呼叫,可以很明瞭地解決問題。
設級數第n項為 ,則第n+1項為,得到遞推式為,。
#include<stdio.h>
double S(int x)
{
double s = 1.0; //結果
double t = 1.0; //每一項
int n = 1; //從0開始該項的項數
do {
t = t * x / n;
s += t;
n++;
} while (t > 1e-6);
return s;
}
此法相當於將每一項作為一個整體而不去關注每一項內部的關係,而關注的是前後兩項的規律,哪一個更好,一目瞭然。
反省了一下,歸根結底就是對遞迴演算法的不敏感,當然這來源於數學嗅覺差,數學不好(一想到這就傷心)。