擅长:python、mysql、java
<p>在多线程应用程序中,最好最小化不同线程之间存在的数据依赖关系。在</p>
<p>在您提到的阶乘递归解决方案中,很难找到不依赖于其他计算结果的计算。在</p>
<p>一种不同的方法是将阶乘分解成多个部分。
例如,对于两个线程,可以执行以下操作:</p>
<p><code>n! = [1 * 2 * 3 * .. * (n/2)] * [(n/2 + 1) * ... * n]</code></p>
<p>第一个线程将计算值:</p>
<p><code>v1 = 1 * 2 * 3 * .. * (n/2)</code></p>
<p>第二个线程将计算:</p>
<p><code>v2 = (n/2 + 1) * ... * n</code></p>
<p>然后,当两个线程都完成时,主线程将计算<code>n! = v1 * v2</code>。在</p>
<p>这可以通过将输入阶乘分解为<code>k</code>不同的部分(而不是上面的示例中的两个)来推广使用<code>k</code>线程。在</p>