Java 如何在一个复杂的方程上构造递归函数?
我需要做一个递归程序,可以找到以下等式的答案: P1(k)是一个简单的二项分布方程 方程Pn(k)将递归调用它自己,直到它不到达P1(k),其结果如下: 这个方程式用于计算某些航空公司的收入。我已经为二项分布建立了计算nCr的函数,并为二项分布建立了一个单独的函数。之所以这样做,是因为概率非常小,也就是说,它们可能相当于10的幂次幂-10或更小Java 如何在一个复杂的方程上构造递归函数?,java,algorithm,recursion,Java,Algorithm,Recursion,我需要做一个递归程序,可以找到以下等式的答案: P1(k)是一个简单的二项分布方程 方程Pn(k)将递归调用它自己,直到它不到达P1(k),其结果如下: 这个方程式用于计算某些航空公司的收入。我已经为二项分布建立了计算nCr的函数,并为二项分布建立了一个单独的函数。之所以这样做,是因为概率非常小,也就是说,它们可能相当于10的幂次幂-10或更小 class GFG { // function to calculate nCr i.e., number of // ways to
class GFG
{
// function to calculate nCr i.e., number of
// ways to choose r out of n objects
static int nCr(int n, int r)
{
// Since nCr is same as nC(n-r)
// To decrease number of iterations
if (r > n / 2)
r = n - r;
int answer = 1;
for (int i = 1; i <= r; i++) {
answer *= (n - r + i);
answer /= i;
}
return answer;
}
// function to calculate binomial r.v. probability
static float binomialProbability(int n, int k, float p)
{
return nCr(n, k) * (float)Math.pow(p, k) *
(float)Math.pow(1 - p, n - k);
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
int n,k = 1,nn;
float p;
System.out.println("Enter the number of total trials ");
n=scan.nextInt();
System.out.println("Enter the success probability ");
p=scan.nextFloat();
System.out.println("Enter the successive number of flights ");
nn=scan.nextInt();
float probability = binomialProbability(n, k, p);
System.out.println( " probability is = " + probability );
scan.close();
}
}
GFG类
{
//用于计算nCr的函数,即
//从n个对象中选择r的方法
静态整数nCr(整数n,整数r)
{
//因为nCr与nC相同(n-r)
//减少迭代次数
如果(r>n/2)
r=n-r;
int-answer=1;
对于(int i=1;i