• 締切済み

再帰呼び出しを用いるnPk,nCk 計算プログラム作成

javaで再帰呼び出しを用いるnPk,nCk計算プログラム作成したいです。 同じクラスでnPk,nCkを求める事です。 再帰呼び出しで nからkを求める事ができないです。ひとつだけなら できますがふたつを一緒に求める事ができません。 なんか方法がないでしょうか?お願いいたします。 結果は 引数nとk値で、 nPk、nCkの計算結果を出したいです。

みんなの回答

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.5

一例として public class ReternValue { public long npk; public long nck; } を作成 private static long com(int n,int k) を private static ReternValue com(int n,int k) に変更して、中身を書き直す。 これで、分からなければ、JAVAを基本から学び直す必要あり。 サンプルソースに不明な点がいくつか (n >= r && r >=0) { rとは?kの間違い //nPk計算 return (n*com(n-1,k-1););//再帰呼び出し kはどこで評価しているの? kがマイナスになってもコールし続けてもいいの? これだとnの階乗しか求まらないと思うけど。

AllForever
質問者

補足

細かく教えていただき、本当に有難う御座います。 すごく勉強になりました。 後入力ミスが多すぎでしだね。気をつけます。 おかけ様で問題解けると思います。 これからもなんかあったらお願いします。

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.4

>下のソースで 再帰呼び出しを使ってnpkは求めっています。 これは、補足には「//nPk計算」としか書いていないが、本来は nPk を計算するロジックが書かれている。ということですか? >そのメソッドの元にnCkも求めたいです。 やっぱり日本語がわかりません。 nPk の結果を「利用して」nCk を求めたい、ということですか? nPk の計算ロジックと「同様にして」nCk を求めたい、ということですか?

AllForever
質問者

補足

nPk の結果を「利用して」nCk を求めたい事です。

  • prophetok
  • ベストアンサー率44% (13/29)
回答No.3

>結果は 引数nとk値で、 nPk、nCkの計算結果を出したいです。 ここだけで、質問者の意図を推し量り、「返値は一つしか返せないのでなんとかならない。」と解釈してみる。 ・二つの整数値をメンバーに持つクラスを作成し返値とする。 or ・参照引数として返す。 以上

AllForever
質問者

お礼

説明不足で理解しにくい問題を解釈して答えていただき、有難うございます。 初心者なので 「・二つの整数値をメンバーに持つクラスを作成し返値とする。」 がうまく理解できません。サンプル例とかあたっらお願いしてよろしいでしょか

  • koko_u_u
  • ベストアンサー率18% (216/1139)
回答No.2

>再帰呼び出しで nからkを求める事ができないです。 言ってる意味がまったくわかりません。 引数は n と k なんだから、「n から k が求まる」わけもないと思うのですが。 とりあえず、途中でいいのでコードを補足に書いて、 そのコードのどこで「n から k を求めたい」のかをコメントして下さい。

AllForever
質問者

補足

すみません。説明がおかしいでした。 下のソースで 再帰呼び出しを使ってnpkは求めっています。 そのメソッドの元にnCkも求めたいです。 mainメソッド{ ........... int n = Integer.parseInt(numn); int k = Integer.parseInt(numr); if (n >= r && r >=0) { //npk計算結果出力 System.out.println(com(n,k)); }else{ System.out.println("inputerror"); } } private static long com(int n,int k){ if( n ==0){ return 1; }else { //nPk計算 return (n*com(n-1,k-1););//再帰呼び出し } }

  • Tasuke22
  • ベストアンサー率33% (1799/5383)
回答No.1

1つが出来るなら、それを2つ作って、2つを呼び出す関数を 作る、ではダメなのですか? 機能実現が目的ではなくて、パズルか何かの問題でしょうか?

AllForever
質問者

お礼

そうなんですよ、課題です。 参考させて頂きます。

関連するQ&A

専門家に質問してみよう