我正在我的教科书中研究下面的代码。它使用组合方法和阶乘方法来计算给定 n 和 k 的可能结果。我的问题是阶乘方法,特别是 for 循环中的内容。
我了解该程序的所有其他内容,但我不了解阶乘方法中 for 循环中的代码 i <=n。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;
}
}