int perm(int n, int k)
{
int i = 1, j;
for (j = 0; j < k; j++) { i *= n--; }
return i;
}// ここに追加関数へのincludeを自由に書く. #include "20230322.c"と書き足します。これで準備完了です(コンパイルとかしません)。さて、まず、うまく動くかどうかテストします。
HL9>!pr perm(4, 0) 1 HL9>!pr perm(4, 1) 4 HL9>!pr perm(4, 2) 12 HL9>
int comb(int n, int k) { return perm(n, k) / perm(k, k); }HL9>!pr comb(4, 2) 6 HL9>!pr comb(5, 3) 10
HL9>![n = 0:<=10] { int sum = 0; sum += comb(n, 0:<=n); printf("n=%d sum=%d pow=%d\n", n, sum, (int) pow(2, n)); }
n=0 sum=1 pow=1
n=1 sum=2 pow=2
n=2 sum=4 pow=4
n=3 sum=8 pow=8
n=4 sum=16 pow=16
n=5 sum=32 pow=32
n=6 sum=64 pow=64
n=7 sum=128 pow=128
n=8 sum=256 pow=256
n=9 sum=512 pow=512
n=10 sum=1024 pow=1024