C言語のきほん「組合せの数」

スポンサーリンク
プログラミング C言語

今回は、「組合せの数」を求めるプログラムである。

異なるn個の整数からr個の整数を取り出す組合せの数$_{n}C_{r}$を求める。

なお、$_{n}C_{r}$は、次のように定義される。↓

$_{n}C_{r} =$ $ _{n-1}C_{r-1} $ + $_{n-1}C_{r} $
ただし、$_{n}C_{0}=_{n}C_{n}=1$ 、 $ _{n}C_{1}=n$

なお、本プログラムは、Windows 11 Home(23H2)上で、 Visual Studio Code(1.87.2)を使用して作成し、gcc (Ubuntu 9.4.0-1ubuntu1~20.04.1) 9.4.0 でコンパイルしている。

C言語のインストールについてはこちらをご参照ください。↓

組合せの数を求めるプログラム

//組合せの数を求めるプログラム

#include <stdio.h>

//異なるn個からr個の整数を取り出す組合せの数を返す

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

int main(void) 
{
    int n,r;

    puts("異なるn個からr個の整数を取り出す組合せの数を求めます。");
    printf("n:");   scanf("%d",&n);
    printf("r:");   scanf("%d",&r);

    printf("組合せの数は%dです。\n",combination(n,r));

    return 0;

}

実行結果

異なるn個からr個の整数を取り出す組合せの数を求めます。
n:5
r:3
組合せの数は10です。

なお、念のため「keisan」サイトで検算してみた。

参考)新・解きながら学ぶC言語 第2版 柴田望洋 (監修・著)、 由梨かおる(著)SBクリエイティブ

新・解きながら学ぶC言語 第2版
Amazonで購入できます↑(クリック)

コメント

タイトルとURLをコピーしました