![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
nCrの計算のプログラムを
nCr=n!/(r!(n-r)!)
を用いて再帰的関数を使って書いたのですが、もし
nCr=n(n-1)(n-2)・・・(n-r+1)/r!
であることを用いて、nからmまでの掛算を実現する2引数の関数を定義して、再帰的関数呼び出しを用いたnCrのプログラムを作成するとしたらどうなるでしょうか。
関数x!の定義は、関数の宣言をlong factorial(int x)として、
if (x==0)
return(1);
else
return(x*factorial(x-1));
となることは分かるのですが、
2引数の関数m(m+1)・・・nはどう作れば良いのか全くわからないので、プログラムが書けない状態です。アドバイスお願いします。
No.3
- 回答日時:
再帰を用いて nCr : comb(n,r) を求めるのなら、
comb(n,r) = comb(n-1, r-1) + comb(n-1, r)
を使った方が楽ではないかと。
int comb(int n, int r) {
if ( n == r ) return 1;
if ( r == 0 ) return 1;
return comb(n-1, r-1) + comb(n-1, r);
}
No.1
- 回答日時:
nCr=n(n-1)(n-2)・・・(n-r+1)/r!
で「n(n-1)(n-2)・・・(n-r+1)」は
nを基準にr回ループさせればいいのではないでしょうか?
ベーシックでいいでしょうか?
というより、どんなプログラムでもforはあると思うのでそれを用いればよいかと思います。
ベーシックしかわからないのでベーシックで記述しておきます。n,rはすでに入力されているとして、メインプログラムだけ記述しておきます。
10 b=1;d=1
20 for a=1 to r
30 b=b*(n-a+1)
40 next a
50 for c=1 to r
60 d=d*c
70 next c
80 e=b/d
で、答えはeとなりませんか?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語 3 2022/10/04 15:07
- 大学・短大 C言語線形リストの問題です 3 2022/12/22 00:45
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- Visual Basic(VBA) Excel のユーザー定義関数でソルバーが動作しない 1 2022/09/05 19:51
- Visual Basic(VBA) VBAプログラミング 4 2023/01/14 00:38
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# 至急教えてください。プログラミングの問題です。 malloc関数を使ってください!お願いします! 最 1 2022/07/21 09:28
- C言語・C++・C# c言語 プログラムのエラー 1 2023/02/11 20:31
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
おすすめ情報