如何使用组合和阶乘

gwbalxhn  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(287)

关闭。这个问题需要细节或清晰。它目前不接受答案。
**想改进这个问题吗?**通过编辑这个帖子来添加细节并澄清问题。

上个月关门了。
改进这个问题
我花了几分钟重新创建公式ncr=n/r(n-r)!查找数组中的组合数。到目前为止,我已经成功地实现了这个公式,但我正在寻找使用这样一个公式的替代方法。这是我的密码:

import java.util.Scanner;

public class Factorial {

    public static void main(String[] args) {
        System.out.println("Enter Num");
        Scanner sc = new Scanner(System.in);
        int num = sc.nextInt();
        long f = 1;
        for(int i = 1; i <= num; ++i)
        {
            f *= i;
        }
        System.out.println("Factorial of " +num +" = " +f);
        System.out.println("Enter r");
        int r = sc.nextInt();
        int bracket = num-r;
        int f2 = 1;
        int rf = 1;
        for(int i = 1; i <= r; ++i)
        {
            rf *= i;
        }
        for(int i = 1; i <= bracket; ++i)
        {
            f2 *= i;
        }
        long ans = f/(rf*f2) ;
        System.out.println(num+"C"+r +" = "+ans);
    }
}
x0fgdtte

x0fgdtte1#

改进公式的一个好方法是使用递归。可以使用此递归方法替换循环:

static int factorial(int n){
    return n == 0 ? 1 : n * factorial(n-1);
}

相关问题