擅长:python、mysql、java
<p>我会这样做,它使用公式,但不是直接的</p>
<ul>
<li><code>(-1) ** n</code>是前一个值乘以<code>-1</code></李>
<li><code>x ** (2n + 1)</code>是前一个值乘以<code>x * x</code></李>
<li><code>(2n + 1)!</code>是前一个值乘以<code>2n * (2n + 1)</code></李>
</ul>
<p>这意味着您的循环不进行幂或阶乘计算,这会更有效一些。这是Python的版本:</p>
<pre class="lang-py prettyprint-override"><code>def approx_sin(x, eps=1e-7):
term = x
two_n = 0
total = 0
while abs(term) >= eps:
total += term
two_n += 2
term *= -x * x / (two_n * (two_n + 1))
return total
</code></pre>