C使用函数计算阶乘

时间:2017-03-08 05:23:06

标签: c arrays function return factorial

所以我试着编写一个函数来输出nCr(从n个元素中选择k个元素的组合),但它没有显示任何输出...... 我想我无法正确调用该函数,但我认为我的语法是正确的:

#include <stdio.h>

int factorial( int n)
{
    int i, nff, nf[10];
    for(i=0;i<n;i++)
        nf[i]=(n-i);

    for(i=0;i<n-1;i++)
       nf[i+1]*=nf[i];

    nff=nf[n-1]; 
    return nff;
}

int faktorial( int k){
    int i, kff, kf[10];
    for(i=0;i<k;i++)
        kf[i]=(k-i);

    for(i=0;i<k-1;i++)
       kf[i+1]*=kf[i];

    kff=kf[k-1]; 
    return kff;   
}

int facktorial( int k, int n){
    int i, nkff, nkf[10];
    for(i=0;i<(n-k);i++)
        nkf[i]=(n-k)-i;

    for(i=0;i<(n-k)-1;i++)
       nkf[i+1]*=nkf[i];

    nkff=nkf[(n-k)-1]; 
    return nkff; 
}

int combination( int k, int n)
{
    // this function shall call (make use of) another function factorial()
    int nfa,kfa,nkfa,nCra;
    nfa=factorial(n);
    kfa=faktorial(k);
    nkfa=facktorial(k,n);
    nCra = nfa/(kfa*nkfa);
    return nCra;
}

int main(void)
{
    int n, k, nCr;

    scanf("%d %d", &n, &k);
    nCr=combination (k, n);

    return 0;
 }

1 个答案:

答案 0 :(得分:2)

您只需在返回结果时输出结果:

printf("%d\n", nCr);
return 0;

另一个问题是,如果输入为0或大于10的数字,程序将崩溃,最好不要将数组用于计算机阶乘。