公式
異なるn個のものからr個とって1列に並べる順列の数は
今回は式(2)を実装。階乗 (factoral) で実装したfactorial関数を利用する。
C言語での実装
#include <stdio.h>
/* ---------------------------------------------
階乗を計算する
引数1: n 整数
戻り値 階乗
---------------------------------------------*/
int factorial(int n)
{
int fact = n;
if (n <= 0) return 1;
while (--n)
fact *= n;
return fact;
}
/* ---------------------------------------------
順列組み合わせの総数を計算する
引数1: n nPrのn
引数2: r nPrのr
戻り値 順列組み合わせの総数
---------------------------------------------*/
int permutation(int n, int r)
{
if (r <= 0) return 1;
return factorial(n) / factorial(n - r);
}
/* main */
int main(void)
{
int n = 5;
int r = 3;
int p;
p = permutation(n, r);
printf("%dP%d = %d\n", n, r, p);
return 0;
}
実行例5P3 = 60
0 件のコメント:
コメントを投稿