作为一个初学者,我最近购买了罗伯特•塞奇威克/凯文•韦恩的《算法-第四版》一书,并且很欣赏每章末尾的练习题。然而,在其中有一个看起来相当简单的练习题却让我疯狂,因为我找不到解决方法。
你需要采取这个递归算法,它可以在n次试验中找到成功k次的概率,其中p是一次事件成功的概率。所给出的算法基于递归二项式分布公式。
这个练习的目标是通过在数组中保存计算的值,使这个算法更快。我已经通过使用另一种获取二项式分布 [p(x) = nCr * p^k * (1 - p)^(n - k)] 的方法(使用迭代方法来查找阶乘),使得该算法变得相当快。但是,我不明白在这种情况下如何使用数组来提高执行时间。
非常感谢任何帮助!
...在有人问之前,这不是作业!
你需要采取这个递归算法,它可以在n次试验中找到成功k次的概率,其中p是一次事件成功的概率。所给出的算法基于递归二项式分布公式。
public static double binomial(int n, int k, double p) {
if (n == 0 && k == 0)
return 1.0;
else if (n < 0 || k < 0)
return 0.0;
return (1 - p) * binomial(n - 1, k, p) + p * binomial(n - 1, k - 1, p);
}
这个练习的目标是通过在数组中保存计算的值,使这个算法更快。我已经通过使用另一种获取二项式分布 [p(x) = nCr * p^k * (1 - p)^(n - k)] 的方法(使用迭代方法来查找阶乘),使得该算法变得相当快。但是,我不明白在这种情况下如何使用数组来提高执行时间。
非常感谢任何帮助!
...在有人问之前,这不是作业!