『新・明解C言語 入門編 第2版』演習問題解答例 8ー7

演習8ー7

問: 異なるn個の整数からr個の整数を取り出す組合せの数nCrを求める関数を作成せよ。

 int combination(int n, int x)

 なお、nCrは次のように定義される。

 nCr = n – 1 C r -1 + n – 1 C r(ただし、nC0 = nCn = 1, nC1 = n)  

// Ex0807.c

#include <stdio.h>

int combination(int n, int r)
{
    if (r == 0 || n == r)
        return 1;
    else if (r == 1)
        return n;
    else
        return combination(n - 1, r - 1) + combination(n - 1, r);
}

int main(void)
{
    int x;
    int y;

    printf("整数は何個?:");
    scanf("%d", &x);
    printf("取り出す個数は?:");
    scanf("%d", &y);

    printf("整数 %d 個 から %d 個を取り出す組み合わせの数は %d です。\n", x, y, combination(x, y));

    return 0;
}

コメント

 問題文の内容が理解できなくて全く手がつけられず、先生の解説を頼った問題。数学的知識が要求されると厳しい。

 


書籍情報



Copyright (C) 2016 "HYOGOKURUMI" All Rights Reserved./「来未炳吾・平極ルミ・HYOGOKURUMI」の発達障害考察を主とした全ての発信は、相互不干渉など特別な約束をした者達を除き、どなたでもご活用できます。ただし著作権は放棄しておりません。あしからずご了承ください。詳細は著作権に関するガイドラインをご一読ください。/「HYOGOKURUMI.site」は、Amazon.co.jpを宣伝しリンクすることによってサイトが紹介料を獲得できる手段を提供することを目的に設定されたアフィリエイトプログラムである、Amazonアソシエイト・プログラムの参加者です。