package j1.lesson09;
import java.io.*;
/**
* 課題0901 - 解答例.
* @author s.arakawa
* @version $Id: PascalTriangle_java.rps,v 1.1 2006/03/06 12:56:15 java2005 Exp $
*/
public class PascalTriangle {
/**
* コンソールから全体の要素数と選び出す要素数を入力させ、その組み合わせの総数を表示するプログラム。
* 組み合わせの総数の計算に再帰メソッド起動(呼び出し)を行うこと。
* @param args 無視される
* @throws IOException 入力時に例外が発生した場合
*/
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
System.out.print("全体の要素数を入力:");
int n = Integer.parseInt(reader.readLine());
System.out.print("選び出す要素数を入力:");
int r = Integer.parseInt(reader.readLine());
System.out.println(n + "から" + r + "を選び出す組み合わせは" + combination(n, r) + "通り");
}
/**
* 引数で与えられた <code>n</code> 個の要素から <code>r</code> 個の要素を選び出す組み合わせの総数を返す。
* このメソッドは必ず再帰呼び出しによって実装すること。
* 再帰的定義によって組み合わせの総数 combination(n,r) を定義すると、以下のようになる。
* <pre>
* combination(n,0) = 1
* combination(n,n) = 1
* combination(n,r) = combination(n-1, r-1) + combination(n-1, r) (r != 0, r != n)
* </pre>
* @param n 全体の個数
* @param r 選び出す個数
* @return 組み合わせの総数
*/
public static int combination(int n, int r) {
if (r == 0) {
return 1;
}
else if (n == r) {
return 1;
}
else {
return combination(n - 1, r - 1) + combination(n - 1, r);
}
}
}
|