演習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;
}
コメント
問題文の内容が理解できなくて全く手がつけられず、先生の解説を頼った問題。数学的知識が要求されると厳しい。
書籍情報
コメント