Java返回命令[关闭]

Posted

技术标签:

【中文标题】Java返回命令[关闭]【英文标题】:Java return command [closed] 【发布时间】:2015-04-19 23:58:48 【问题描述】:

所以这里有我从教科书中复制的代码。我不完全理解 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;

【问题讨论】:

什么...?他们称它们为相同的方法,只是输入不同。我对你的困惑感到困惑。编辑:我想我看到了你的困惑。在combinations 中传入的n 与作为factorial 参数的n 相比,是一个完全 不同的变量。请阅读范围! 观察形参和实参之间的区别 - 前者只是一个占位符,具体词汇化在调用站点不起作用! 如果你调用 factorial(3) 调用会去哪里?阶乘(5)去哪儿了?阶乘(n)?想想吧。 @collapsar。神圣词汇化蝙蝠侠你刚才说什么? @AndyBrown 无论是调用factorial(n) 还是factorial(k),参数总是映射到private int factorial(int n) 中的n。措辞可能有点过于复杂...... ;-) 【参考方案1】:

观察参数参数的区别:

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

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

private int factorial(int n)

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

【讨论】:

完美 - 您的解释与大多数 Java Tutorials about arguments and parameters 相符。 FWIW 我认为 OP 的其他混淆是关于范围 - 即在方法中声明的变量在原始方法调用的方法中不可见。【参考方案2】:

你被函数调用和函数定义弄糊涂了。

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

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

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

一定义,三用。

【讨论】:

以上是关于Java返回命令[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

自动退出 Telnet 命令返回提示,无需人工干预 ^] quit 关闭退出代码 1

设计:Java 和在 setter 方法中返回自引用 [关闭]

Java Rest API - 返回帐户余额的方法[关闭]

你如何返回一个数组并在java中打印出来? [关闭]

Java+Selenium 如何实现关闭当前窗口并返回上一个窗口-driver.close()

如何在 C++ 中实现方法返回类似 Java 中的对象 [关闭]