[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

情報処理技法(Javaプログラミング)II 第9回

目次
索引

再帰的アルゴリズム(1)

テキストpp.144--157を参照。


課題9

組合せ関数 combin ( n , r )は、 n C r とも書かれ、 n 個の要素から r 個を選ぶ場合の組合せの数を表します。 組合せ関数は、以下のように再帰的に定義されます。

combin ( n , r )=1( r =0または r n
combin ( n , r )= combin ( n -1, r -1)+ combin ( n -1, r )(それ以外)

p.149のList 5-2を参考にして、組合せ関数を計算するプログラムを作成してください。

Combin.java
import java.util.Scanner;

class Combin {
    static int combin(int n, int r) {
        
        
    }
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);
        
        
    }
}
ターミナル
PS ...\Desktop\java2>  & ... 'Combin'
n個の要素からr個を選ぶ場合の組合せの数を求めます。
整数nを入力せよ:6
整数rを入力せよ:4
組合せの数は15です。
PS ...\Desktop\java2>

余力のある人は、p.156のList 5-6を参考にして、組合せ関数の計算をメモ化してください。

メモ用の配列 memo は、Integer[][]型のクラス変数として宣言し、 n r が入力されてから、new Integer[ n +1][ r +1]で生成してください。

また、メソッド combin ( n , r )では、もし memo [ n ][ r ]がnullでなければその値を返却し、そうでなければ combin ( n , r )を定義どおりに計算し、その結果を memo [ n ][ r ]に格納してから返却してください。

CombinMemo.java
import java.util.Scanner;

class CombinMemo {
    static Integer[][] memo;
    static int combin(int n, int r) {
        
        
    }
    public static void main(String[] args) {
        Scanner stdIn = new Scanner(System.in);
        
        
    }
}
ターミナル
PS ...\Desktop\java2>  & ... 'CombinMemo'
n個の要素からr個を選ぶ場合の組合せの数を求めます。
整数nを入力せよ:6
整数rを入力せよ:4
組合せの数は15です。
PS ...\Desktop\java2>

完成したら、答案(Javaプログラム)をメールで提出してください。 差出人は大学発行のメール・アドレス(学生番号@cis.twcu.ac.jp)とし、宛先はkonishi@cis.twcu.ac.jpとします。 メールの本文には、学生番号、氏名、科目名、授業日(11月21日)を明記してください。


参考文献


[小西ホームページ]   [目次・索引]   [前の授業]   [次の授業]

2025年11月21日更新
小西 善二郎 <konishi@cis.twcu.ac.jp>
Copyright (C) 2025 Zenjiro Konishi. All rights reserved.