C 使用函数计算阶乘

标签 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;
 }

最佳答案

返回时只需要输出结果即可:

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

还有一个问题,如果输入是0或者大于10的数,你的程序会崩溃,最好不要使用数组来计算阶乘。

关于C 使用函数计算阶乘,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42663578/

相关文章:

arrays - 戈朗 : unsafe dynamic byte array

c - 为什么一个段有故障而另一个段没有故障?

objective-c - 位掩码的递增部分

c - K&R 练习 2-7 中的位反转函数

全局变量的 Python 替代品

javascript - 如何为游戏对象使用抽象构造函数?

Javascript 函数按顺序运行

c - 在我的单链表实现中,为什么即使我为要释放的节点分配了内存,指向节点的指针也不为空?

java - 如何将Http url(图像URL)转换为字节缓冲区或字节?

javascript - 更新动态文本框中的现有值时在数组中创建新条目