计算有序和无序排列 - C

标签 c recursion combinations permutation combinatorics

尝试计算 C 中数字和选择的有序排列和无序排列。 递归阶乘函数正在工作,排列结果给出随机存储位置

./排列
输入项目数量:5
输入要选择的数量:2
有1.#INF00有序排列
1.#INF00无序排列

#include <stdio.h>

double ordered_permutation(double total_items, double selection);
double unordered_permutation(double total_items, double selection);
double factorial( double number);

int main() {

    double items;
    double selection;
    printf("Enter number of items: ");
    scanf("%f", &items);
    printf("Enter number to select: ");
    scanf("%f", &selection);

    double ordered_perm;
    double unordered_perm;
    ordered_perm = ordered_permutation( items, selection );
    unordered_perm = unordered_permutation( items , selection );

    printf("There are %f ordered permutations\nThere are %f unordered permutations\n", ordered_perm, unordered_perm);

    return 0;
}

/*    total_items!/ ( total_items! - selection! )    */
double ordered_permutation(double total_items, double selection){
    double permutations;

    permutations = factorial(total_items)/ ( factorial(total_items) - factorial(selection) );

    return permutations;
}

/*    total_items!/ ( ( total_items! - selection! ) selection! )    */
double unordered_permutation(double total_items, double selection){
    double permutations;

    permutations = factorial(total_items)/ ( ( factorial(total_items) - factorial(selection) ) * factorial(selection));

    return permutations;
}

double factorial( double number){
    if( number <= 1 )
        return 1;
    else 
        return  number * factorial((number-1));
}

最佳答案

将分母调用更改为:

    factorial(total_items - selection)

    (factorial(total_items- selection) * factorial(selection))

关于计算有序和无序排列 - C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33490207/

相关文章:

c - 从文本文件扫描

c - Max 宏的安全解决方案?

Python:递归:查找二叉树的叶子数

c++ - R 到 C++ : Rcpp - Combinatorial example

c - 如何使用 C 中的递归为 0,1 生成 4 位二进制组合?

c - 打印数组时出现段错误

c - 将一个数组存储在另一个数组中 C

python - 在 Python 中使用多个递归函数

php - 从键中递归地向左修剪特定字符

c++ - 函数给出错误的结果