組合せの総数(二項係数)nCr は次の関係式で定義できる.
nC0 = 1 (n >= 0)
nCn = 1 (n >= 1)
nCr = 0 (r > n)
nCr = n-1Cr + n-1Cr-1 (n > r > 0)
この式に従って再帰関数 unsigned int reccomb(int m, int n) を定義し,動作テストせよ.
ただし,関数 reccomb() には関数を呼び出した回数を数える機能を追加しておき,何回 reccomb() を呼び出したかも表示せよ.
なのですが、現在、下記の状況で行き詰まっています。
どのように再帰関数を使えばいいのか分からないのと、関数を呼び出した回数を数える方法が分かりません。
#include <stdio.h>
int count = 0;
int recfact(int n) {
return (n <= 1 ? 1 : n * recfact(n - 1));
}
unsigned int reccomb(int m, int n) {
count++;
if (m >= 0 && n == 0) {
return (1);
}
else if (m >= 1 && m == n) {
return (1);
}
else if (m < n) {
return (0);
}
else {
}
}
int main(void) {
int n, r;
printf("n C r の n と r を入力せよ.\n");
printf("n = "); scanf("%d", &n);
printf("r = "); scanf("%d", &r);
printf(" reccomb() の呼び出し回数:%d\n", count);
printf(" n C r = %d\n", reccomb(n, r));
return (0);
}
助言だけでもいいですので、よろしくお願いしますm(_ _)m