C使用功能计算阶乘



因此,我尝试将函数编码为输出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;
 }

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

printf("%dn", nCr);
return 0;

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

最新更新