一、二项分布,递归实现 public static double binomial(int N, int k, double p){ if(N==0 && k==0) return 1.0; if(N < 0 || k < 0) return 0.0; return (1.0 - p) * binomial(N-1, k, p) + p * binomial(N-1, k-1, p); }解释: 缺点:递归调用,没有保存已经计算过的值,导致很费时间 二、二项分布,非递归实现。将已经计算过的值保存在数组中并给出一个更好的实现 public static double bin(int N, int k, double p){ double [][] b = new double[N+1][k+1]; b[0][0] = 1; for(int i=1; i<=N; i++) b[i][0] = (1.0 - p) * b[i-1][0]; for(int i=1; i<=N; i++){ for(int j=1; j<=k; j++){ b[i][j] = (1.0 - p) * b[i-1][j] + p * b[i-1][j-1]; } } return b[N][k]; }