0

二項関数を実装するプログラムを作成しました(n!/k!*(n-k)!)

問題なくプログラムをコンパイルできますが、2 つの int (n と k) をスキャンすると、「浮動小数点例外」と表示されます。

私はそれを修正するために多くの方法を試しましたが、私はCプログラミングが得意ではないので問題を見つけることができません:(私は学んでいます.誰かが私を助けてくれますか?どうもありがとう.

#include <stdio.h>
#include <stdlib.h>

int factorial( int n ){
    int result;
    if( n == 0 ){
        result = 0;
    } else {
        result = n * factorial((n - 1));
    }
    return result;
}

char *stringa_binomiale(int n, int k){

    char *s;
    s=malloc(sizeof(char)*20);

    int b;

    b = factorial(n)/(factorial(k)*factorial(n-k));

    sprintf(s,"%i su %i fa %i",n ,k ,b);

    return s;
}

int main (void){

    int n;
    int k;
    char *s;
    s=malloc(sizeof(char)*20);

    printf("n:");
    scanf("%i",&n);
    printf("k:");
    scanf("%i",&k);

    s= stringa_binomiale(n,k);
    printf("%s \n", stringa_binomiale(n, k));

    free(s);
    return 0;
}
4

4 に答える 4