Java return 命令

Java return command

所以这里有这段代码,是我从教科书上复制的。我不完全理解 factorial(k) 是如何从中获取它的数字的,因为只有 factorial(n) 有一个计算它的值的方法。

public void run(){
    int n = readInt("Enter the number of objects, n, in the set: ");
    int k = readInt("Enter numberto be chose,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;
}

}

你对函数调用和函数定义感到困惑。

return factorial(n) / (factorial(k) * factorial(n-k)); 调用了一个名为 factorial 的函数,它具有不同的值(nn-kk)。

private int factorial(int n){ 开头的行定义了任何给定值 n 的函数。 n 是一个变量,表示调用传递的值。

如果您用值 10 和 4(分别)调用 combination,那么它会分别用 10、4 和 6 调用 factorial。第一次调用将 10 绑定到 n(阶乘的形式参数),第二次将 4 绑定到 n(形式参数),第三次将 6 绑定到 n(形式参数)。

一个定义,三种使用。

观察参数参数之间的区别:

return factorial(n) / (factorial(k) * factorial(n-k));

这里第一个 n 是一个 参数 - 传递给被调用函数的值。

private int factorial(int n)

这里 n 是一个 参数 - 一个占位符,用于定义函数在使用参数调用时应该做什么。如果你无法表达函数应该用这个参数做什么,那么传递一个参数有什么用?