使用递归求解方程的建议

问题描述 投票:-3回答:1

所以!代表此等式中的阶乘(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

java recursion factorial
1个回答
0
投票
             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));

© www.soinside.com 2019 - 2024. All rights reserved.