###前提
c言語を書籍で勉強している学生です。
書籍には回答がないため、質問する回数が多くなりがちです。
###問題
異なるn個の整数からr個の整数を取り出す組み合わせの数n C rを求める関数を作成せよ。
lang
1int combination (int n, int 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)
###該当のソースコード
lang
1/*階乗値を求める */ 2int factorial (int n) 3{ 4 if(n < 0){ 5 return n * factorial(n - 1); 6 }else { 7 return 1; 8 } 9} 10 11/*組み合わせを求める*/ 12int combination (int n, int r) 13{ 14 return factorial(n) / factorial(r) / factorial(n - r); 15}
###疑問点
再帰を使うのは分かるのですが、どのように使えばいいのか分かりません。
n C r = n! / r!(n - r)! という性質を使って上記のコードを作成したのですが、上手く動作しませんでした。
###補足情報
書籍 : 新明解c言語 入門編
演習8-7

回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/09/15 22:19