私は教科書で以下のコードを勉強しています。組み合わせ法と階乗法を使用して、nとkが与えられた場合に考えられる結果を計算します。私の質問は、階乗メソッド、特にforループのコンテンツに関するものです。
私はプログラムに関する他のすべてを理解していますが、階乗メソッドのforループのコードi<=nを理解していません。プログラムの他のどの部分が参照されていますか?i <= nの背後にある理論的根拠や、プログラマーがそれをどのように思いついたのか、私にはよくわかりません。
import acm.program.*;
public class combinations extends ConsoleProgram {
public void run(){
int n = readInt("Enter the number of objects in the set (n): ");
int k = readInt("Enter the number to be chosen (k): ");
println("C (" + n + ", " + k + ") = " + combinations (n, k) );
}
private int combinations (int n, int k){
return factorial (n) / (factorial (k) * factorial (n-k));
}
private int factorial (int n){
int result = 1;
for (int i = 1; i <= n; i++){
result *= i;
}
return result;
}
}