所以!代表此等式中的阶乘(ps试图使用递归在java中求解)
等式为C(n,r)=n! /(r!(n-r)!)This is the eqaution how you would write it normally (image is more clear)
注意:我尝试将for循环与递归组合在一起,但它始终会回答0,当我输入2和9时我希望它给出36的答案以下是我当前正在使用的代码
public long Recursion(long c){
if (c <= 2) {
return c;
}
return c*Recursion(c-1);
//this assignment is my punishment for not using recursion
}
private void CalMouseClicked(java.awt.event.MouseEvent evt) {
// TODO add your handling code here:
int n = Integer.parseInt(Var_n.getText());
int r = Integer.parseInt(var_r.getText());
long Ans = 0;
for(int i = 2; i <= n; i++){
for(int y=2;y <=r;y++){
long n2 = Recursion(n);
System.out.println(String.valueOf(n2));
long r2 = Recursion(r);
System.out.println(String.valueOf(r2));
long g = (n-r);
System.out.println(String.valueOf(g));
long x = r2*g;
Ans = n2/(Recursion(x));
System.out.println(String.valueOf(Ans));
Output.setText("There are " + String.valueOf(Ans) + " ways");
}
Here's a screenshot of the output along with my code(which I've since edited)
编辑:我固定了将r代替r2的错字,但没有改变ans
long g = (n-r);
System.out.println(String.valueOf(g));
long x = r2*g;
Ans = n2/(Recursion(x));
这部分不正确。请记住,公式是n! / r!(n-r)!
您已经计算出n-r,因此需要计算其阶乘,然后乘以r2。您要乘以r2 *(n-r),然后乘以全部的阶乘。
代码应显示为
Ans = n2/r2*(Recursion(g));