順列「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;
}