順列「nPr」をJAVAコードを書いて理解する。

順列の解説はこちらのサイトがわかりやすいと思います。

応用技術者試験のために、改めて、順列について確認しました。

理解しているかを確認するために、プログラミングコードを書きました。まず、以下です。

	public static int nPr (int n, int r) {
		List<Integer> array = new ArrayList<>();
		for(int i = 1 ; i < r ; i++) {
			array.add(n -i);
		}
		int returnInt = n;
		for(int i : array) {
			logger.info("nPr:" + returnInt);
			returnInt = returnInt * i;
		}
		return returnInt;
	}

Listに入れる必要がないため、以下にリファクタリングしました。

	public static int nPr2 (int n, int r) {
		int returnInt = n;
		for(int i = 1 ; i < r ; i++) {
			logger.info("nPr2:" + returnInt);
			returnInt = returnInt * (n - i);
		
		}		
		return returnInt;
	}