很久没写过题解了
题目见zoj2957这个题目是Zoj May月赛的一道题目,题目大意就是有一连串的函数fn(x),是递归定义的

F0(x) = sin(x) / x
F1(x)= (sin(x) - x * cos(x)) / x / x
Fn+1(x) = (2 * n + 1) * Fn(x) / x - Fn-1(x)
你要计算 Fn(x) 对给定的 n 和 x.

这个题目的关键在于要计算出较高的精度,反正我是没有什么好办法。最后发现只有用泰勒级数展开才能得到比较精确的结果。
首先需要了解一点相关知识: 可以参见 泰勒级数及其应用
我们只需要用如下两个公式
sinx = x/1! - x^3/3! + x^5/5! - x^7/7! + ......
cosx = 1 - x^2/2! + x^4/4! - x^6/6! + ......

将以上公式带入f0 f1,并继续推可得[tex]
f_n(x)=\sum_{i=0}^{\infty}2^i(i+1)(i+2)...(i+n)x^{2i+n}/(2i+2n+1)! [/tex]

然后我们可以根据以上无穷级数直接计算,你会发现其中的项收敛非常迅速,并且后一项可以根据前一项推出,所以只要很短的时间便可得到结果
参考代码 cpp