|
nCrの定義をそのままプログラム化すればいいと思いますが。
#include <stdio.h>
/*---階乗値を返す---*/
int fact(int n)
{
if(n>0)
return(n*fact(n-1));
else
return(1);
}
/*異なるn個の整数からr個の整数を取り出す組み合わせ数nCrを求める関数 >nCr=n-1Cr-1+n-1Cr(ただし nC0=nCn=1,nC1=n)---*/
int comb(int n,int r)
{
if (r == 0 || n == r) return 1;
if (r == 1) return n;
return comb(n - 1, r - 1) + comb(n - 1, r);
}
int main(void)
{
int n1,r1;
printf("整数を入力してください");
scanf("%d",&n1);
printf("なんこ整数を取り出しますか");
scanf("%d",&r1);
printf("組み合わせは%d通りある。",comb(n1,r1));
return 0;
}
|