既然已经知道了函数 N 的定义,那么这道题的关键就是找出函数 D 生成数值序列的模式了。
分析书中给出的 D_i 生成的序列:
i | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | ... |
---|---|---|---|---|---|---|---|---|---|---|---|---|
D_i | 1 | 2 | 1 | 1 | 4 | 1 | 1 | 6 | 1 | 1 | 8 | ... |
观察以上序列,可以发现函数 D_i 的规律:
- 当 (i + 1) 取模 3 等于 0 时, D_i 等于 (i + 1) / 3 * 2
- 其他情况下, D_i 返回 1
根据以上规律,可以写出完整的求 e 函数了:
.. literalinclude:: code/38-e.scm
测试:
1 ]=> (load "38-e.scm") ;Loading "38-e.scm"... ; Loading "37-iter-cont-frac.scm"... done ;... done ;Value: e 1 ]=> (e 1) ;Value: 3. 1 ]=> (e 2) ;Value: 2.6666666666666665 1 ]=> (e 3) ;Value: 2.75 1 ]=> (e 4) ;Value: 2.7142857142857144 1 ]=> (e 5) ;Value: 2.71875 1 ]=> (e 10) ;Value: 2.7182817182817183 1 ]=> (e 100) ;Value: 2.718281828459045